You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by gv...@apache.org on 2005/09/15 05:56:29 UTC

svn commit: r289140 [1/2] - in /struts/shale/trunk: clay-plugin/src/conf/ clay-plugin/src/java/org/apache/shale/clay/component/ clay-plugin/src/java/org/apache/shale/clay/component/chain/ clay-plugin/src/java/org/apache/shale/clay/config/ clay-plugin/s...

Author: gvanmatre
Date: Wed Sep 14 20:56:06 2005
New Revision: 289140

URL: http://svn.apache.org/viewcvs?rev=289140&view=rev
Log:
Fix for bug# 36659, 36644 and 36660. Added the capability to build HTML views without an XML configuration file.

Modified:
    struts/shale/trunk/clay-plugin/src/conf/view-config.xml
    struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/Clay.java
    struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/AssignPropertiesCommand.java
    struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/PropertyActionCommand.java
    struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/PropertyActionListenerCommand.java
    struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/PropertyValidatorCommand.java
    struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/PropertyValueChangeListenerCommand.java
    struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/PropertyValueCommand.java
    struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/shale-clay-config.xml
    struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/config/Globals.java
    struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/config/beans/AttributeBean.java
    struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/config/beans/TemplateConfigBean.java
    struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/faces/ClayViewHandler.java
    struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/Builder.java
    struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/CommandButtonBuilder.java
    struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/VerbatimBuilder.java
    struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/DefaultBuilderRule.java
    struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/SpanBuilderRule.java
    struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/shale-builder-config.xml
    struts/shale/trunk/clay-plugin/src/test/org/apache/shale/clay/config/ConfigTestCase.java
    struts/shale/trunk/use-cases/src/java/org/apache/shale/usecases/rolodex/Rolodex.java
    struts/shale/trunk/use-cases/src/web/rolodex/hrolodex.html

Modified: struts/shale/trunk/clay-plugin/src/conf/view-config.xml
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/conf/view-config.xml?rev=289140&r1=289139&r2=289140&view=diff
==============================================================================
--- struts/shale/trunk/clay-plugin/src/conf/view-config.xml (original)
+++ struts/shale/trunk/clay-plugin/src/conf/view-config.xml Wed Sep 14 20:56:06 2005
@@ -25,28 +25,115 @@
       validated (on a subsequent form submit) to catch cases where the
       same form was submitted more than once.
     -->
-  <component jsfid="token" id="token" componentType="org.apache.shale.Token" allowBody="false"/>
+  <component jsfid="token" id="token" componentType="org.apache.shale.Token" allowBody="false">
+      <attributes>
+        <set name="rendered" useValueLateBinding="true" />
+      </attributes>
+  </component>
+
+  <!--  Provides access to Commons Validators  -->
+  <component jsfid="commonsValidator" id="commonsValidator" componentType="org.apache.shale.CommonsValidator" allowBody="false">
+      <attributes>
+        <set name="type" useValueLateBinding="true" />
+        <set name="min" useValueLateBinding="true" />
+        <set name="max" useValueLateBinding="true" />
+        <set name="minlength" useValueLateBinding="true" />
+        <set name="maxlength" useValueLateBinding="true" />
+        <set name="mask" useValueLateBinding="true" />
+        <set name="message" useValueLateBinding="true" />
+        <set name="arg" useValueLateBinding="true" />
+        <set name="client" useValueLateBinding="true" />
+        <set name="server" useValueLateBinding="true" />
+      </attributes>
+  </component>
+
+  <!--  Provide ViewController support functionality for the nested content
+      (typically a JSP dynamic include) of this component.
+  -->
+  <component jsfid="subview" id="subview" componentType="org.apache.shale.Subview" allowBody="true">
+      <attributes>
+        <set name="rendered" useValueLateBinding="true" />
+      </attributes>
+  </component>
+
+  <!-- Generates JavaScript for client-side validation  -->
+  <component jsfid="validatorScript" id="validatorScript" componentType="org.apache.shale.ValidatorScript" allowBody="false">
+      <attributes>
+        <set name="functionName" useValueLateBinding="true" />
+      </attributes>
+  </component>
 
   <!-- 
      Render readonly text
    -->
   <component jsfid="outputText" componentType="javax.faces.HtmlOutputText">
     <attributes>
-      <!-- The current value of this component. -->
-      <set name="value" useValueLateBinding="true" />      
+        <set name="value" useValueLateBinding="true" />  
+        <set name="rendered" useValueLateBinding="true" />
+      
+        <!-- HTML 4.0 universal attributes -->
+        <set name="dir" useValueLateBinding="true" />  
+        <set name="lang" useValueLateBinding="true" />  
+        <set name="style" useValueLateBinding="true" />  
+        <set name="title" useValueLateBinding="true" />  
+        <set name="styleClass" useValueLateBinding="true" />  
+        
+        <!-- HTML 4.0 event-handler attributes --> 
+        <set name="onclick" useValueLateBinding="true" />  
+        <set name="ondblclick" useValueLateBinding="true" />  
+        <set name="onmousedown" useValueLateBinding="true" />  
+        <set name="onmouseup" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmousemove" useValueLateBinding="true" />  
+        <set name="onmouseout" useValueLateBinding="true" />  
+        <set name="onkeypress" useValueLateBinding="true" />  
+        <set name="onkeydown" useValueLateBinding="true" />  
+        <set name="onkeyup" useValueLateBinding="true" />  
+
+        <set name="escape" useValueLateBinding="true" />  
+    
     </attributes>
   </component>
  
   <!-- 
      Render a url query parameter argument
    -->   
-  <component jsfid="parameter" componentType="javax.faces.Parameter"/>
-  <component jsfid="param" componentType="javax.faces.Parameter"/>
+  <component jsfid="parameter" componentType="javax.faces.Parameter">
+    <attributes>
+      <set name="rendered" useValueLateBinding="true" />
+      <set name="name" useValueLateBinding="true" />
+      <set name="value" useValueLateBinding="true" />
+    </attributes>  
+  </component>
+  <component jsfid="param" extends="parameter"/>
   
   <!-- 
       Render a single html option tag
    -->
-  <component jsfid="selectItem" componentType="javax.faces.SelectItem"/>
+  <component jsfid="selectItem" componentType="javax.faces.SelectItem">
+    <attributes>
+      <set name="itemDisabled" useValueLateBinding="true" />
+      <set name="itemDescription" useValueLateBinding="true" />
+      <set name="itemLabel" useValueLateBinding="true" />
+      <set name="itemValue" useValueLateBinding="true" />
+      <set name="value" useValueLateBinding="true" />
+    </attributes>  
+  
+  </component>
+  
+    <!-- 
+      Render plain text
+   -->
+  <component jsfid="verbatim" componentType="javax.faces.HtmlOutputText">
+    <attributes>
+      <set name="escape" useValueLateBinding="true" />
+      <set name="isTransient" useValueLateBinding="false" value="true" />
+      <set name="value" useValueLateBinding="true" />       
+    </attributes>
+  </component>
+  
+  
   
   <!-- 
       Render an html option tag for each item in the bound collection
@@ -60,111 +147,951 @@
   <!-- 
       Render a set of html "input" elements of type "radio".
    -->
-  <component jsfid="selectOneRadio" componentType="javax.faces.HtmlSelectOneRadio"/>
+  <component jsfid="selectOneRadio" componentType="javax.faces.HtmlSelectOneRadio">
+      <attributes>
+        <set name="rendered" useValueLateBinding="true" />
+        <set name="value" useValueLateBinding="true" />
+        <set name="converter" useMethodLateBinding="true" />
+        <set name="immediate" useValueLateBinding="true" />
+        <set name="validator" useMethodLateBinding="true" />
+        <set name="valueChangeListener" useMethodLateBinding="true" />
+        
+        <!-- HTML 4.0 input attributes -->
+        <set name="accesskey" useValueLateBinding="true" />
+        <set name="align" useValueLateBinding="true" />
+        <set name="alt" useValueLateBinding="true" />
+        <set name="datafld" useValueLateBinding="true" />
+        <set name="datasrc" useValueLateBinding="true" />
+        <set name="dataformatas" useValueLateBinding="true" />
+        <set name="disabled" useValueLateBinding="true" />
+        <set name="onblur" useValueLateBinding="true" />
+        <set name="onchange" useValueLateBinding="true" />
+        <set name="onfocus" useValueLateBinding="true" />
+        <set name="readonly" useValueLateBinding="true" />
+        <set name="onselect" useValueLateBinding="true" />
+        <set name="tabindex" useValueLateBinding="true" />
+ 
+         <!-- HTML 4.0 universal attributes -->
+        <set name="dir" useValueLateBinding="true" />  
+        <set name="lang" useValueLateBinding="true" />  
+        <set name="style" useValueLateBinding="true" />  
+        <set name="title" useValueLateBinding="true" />  
+        <set name="styleClass" useValueLateBinding="true" /> 
+        
+        <!-- HTML 4.0 event-handler attributes --> 
+        <set name="onclick" useValueLateBinding="true" />  
+        <set name="ondblclick" useValueLateBinding="true" />  
+        <set name="onmousedown" useValueLateBinding="true" />  
+        <set name="onmouseup" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmousemove" useValueLateBinding="true" />  
+        <set name="onmouseout" useValueLateBinding="true" />  
+        <set name="onkeypress" useValueLateBinding="true" />  
+        <set name="onkeydown" useValueLateBinding="true" />  
+        <set name="onkeyup" useValueLateBinding="true" /> 
+        
+        <set name="layout" useValueLateBinding="true" /> 
+        <set name="border" useValueLateBinding="true" /> 
+        
+      </attributes>
+  </component>
 
   <!-- 
       Render a "select" element without a multiple attribute.
    -->  
-  <component jsfid="selectOneMenu" componentType="javax.faces.HtmlSelectOneMenu"/>
+  <component jsfid="selectOneMenu" componentType="javax.faces.HtmlSelectOneMenu">
+      <attributes>
+        <set name="rendered" useValueLateBinding="true" />
+        <set name="value" useValueLateBinding="true" />
+        <set name="converter" useMethodLateBinding="true" />
+        <set name="immediate" useValueLateBinding="true" />
+        <set name="validator" useMethodLateBinding="true" />
+        <set name="valueChangeListener" useMethodLateBinding="true" />
+        
+        <!-- HTML 4.0 input attributes -->
+        <set name="accesskey" useValueLateBinding="true" />
+        <set name="align" useValueLateBinding="true" />
+        <set name="alt" useValueLateBinding="true" />
+        <set name="datafld" useValueLateBinding="true" />
+        <set name="datasrc" useValueLateBinding="true" />
+        <set name="dataformatas" useValueLateBinding="true" />
+        <set name="disabled" useValueLateBinding="true" />
+        <set name="onblur" useValueLateBinding="true" />
+        <set name="onchange" useValueLateBinding="true" />
+        <set name="onfocus" useValueLateBinding="true" />
+        <set name="readonly" useValueLateBinding="true" />
+        <set name="onselect" useValueLateBinding="true" />
+        <set name="tabindex" useValueLateBinding="true" />
+ 
+         <!-- HTML 4.0 universal attributes -->
+        <set name="dir" useValueLateBinding="true" />  
+        <set name="lang" useValueLateBinding="true" />  
+        <set name="style" useValueLateBinding="true" />  
+        <set name="title" useValueLateBinding="true" />  
+        <set name="styleClass" useValueLateBinding="true" /> 
+        
+        <!-- HTML 4.0 event-handler attributes --> 
+        <set name="onclick" useValueLateBinding="true" />  
+        <set name="ondblclick" useValueLateBinding="true" />  
+        <set name="onmousedown" useValueLateBinding="true" />  
+        <set name="onmouseup" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmousemove" useValueLateBinding="true" />  
+        <set name="onmouseout" useValueLateBinding="true" />  
+        <set name="onkeypress" useValueLateBinding="true" />  
+        <set name="onkeydown" useValueLateBinding="true" />  
+        <set name="onkeyup" useValueLateBinding="true" /> 
+      </attributes>
+
+  </component>
 
   <!-- 
       Render a "select" element with a multiple attribute.
    -->    
-  <component jsfid="selectManyMenu" componentType="javax.faces.HtmlSelectManyMenu"/>
+  <component jsfid="selectManyMenu" componentType="javax.faces.HtmlSelectManyMenu">
+      <attributes>
+        <set name="rendered" useValueLateBinding="true" />
+        <set name="value" useValueLateBinding="true" />
+        <set name="converter" useMethodLateBinding="true" />
+        <set name="immediate" useValueLateBinding="true" />
+        <set name="validator" useMethodLateBinding="true" />
+        <set name="valueChangeListener" useMethodLateBinding="true" />
+        
+        <!-- HTML 4.0 input attributes -->
+        <set name="accesskey" useValueLateBinding="true" />
+        <set name="align" useValueLateBinding="true" />
+        <set name="alt" useValueLateBinding="true" />
+        <set name="datafld" useValueLateBinding="true" />
+        <set name="datasrc" useValueLateBinding="true" />
+        <set name="dataformatas" useValueLateBinding="true" />
+        <set name="disabled" useValueLateBinding="true" />
+        <set name="onblur" useValueLateBinding="true" />
+        <set name="onchange" useValueLateBinding="true" />
+        <set name="onfocus" useValueLateBinding="true" />
+        <set name="readonly" useValueLateBinding="true" />
+        <set name="onselect" useValueLateBinding="true" />
+        <set name="tabindex" useValueLateBinding="true" />
+ 
+         <!-- HTML 4.0 universal attributes -->
+        <set name="dir" useValueLateBinding="true" />  
+        <set name="lang" useValueLateBinding="true" />  
+        <set name="style" useValueLateBinding="true" />  
+        <set name="title" useValueLateBinding="true" />  
+        <set name="styleClass" useValueLateBinding="true" /> 
+        
+        <!-- HTML 4.0 event-handler attributes --> 
+        <set name="onclick" useValueLateBinding="true" />  
+        <set name="ondblclick" useValueLateBinding="true" />  
+        <set name="onmousedown" useValueLateBinding="true" />  
+        <set name="onmouseup" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmousemove" useValueLateBinding="true" />  
+        <set name="onmouseout" useValueLateBinding="true" />  
+        <set name="onkeypress" useValueLateBinding="true" />  
+        <set name="onkeydown" useValueLateBinding="true" />  
+        <set name="onkeyup" useValueLateBinding="true" /> 
+      </attributes>
+  </component>
 
   <!-- 
       Render a set of html "input" elements of type "checkbox".
    -->  
-  <component jsfid="manyCheckbox" componentType="javax.faces.HtmlSelectManyCheckbox"/>
+  <component jsfid="manySelectCheckbox" componentType="javax.faces.HtmlSelectManyCheckbox">
+      <attributes>
+        <set name="rendered" useValueLateBinding="true" />
+        <set name="value" useValueLateBinding="true" />
+        <set name="converter" useMethodLateBinding="true" />
+        <set name="immediate" useValueLateBinding="true" />
+        <set name="validator" useMethodLateBinding="true" />
+        <set name="valueChangeListener" useMethodLateBinding="true" />
+        
+        <!-- HTML 4.0 input attributes -->
+        <set name="accesskey" useValueLateBinding="true" />
+        <set name="align" useValueLateBinding="true" />
+        <set name="alt" useValueLateBinding="true" />
+        <set name="datafld" useValueLateBinding="true" />
+        <set name="datasrc" useValueLateBinding="true" />
+        <set name="dataformatas" useValueLateBinding="true" />
+        <set name="disabled" useValueLateBinding="true" />
+        <set name="onblur" useValueLateBinding="true" />
+        <set name="onchange" useValueLateBinding="true" />
+        <set name="onfocus" useValueLateBinding="true" />
+        <set name="readonly" useValueLateBinding="true" />
+        <set name="onselect" useValueLateBinding="true" />
+        <set name="tabindex" useValueLateBinding="true" />
+ 
+         <!-- HTML 4.0 universal attributes -->
+        <set name="dir" useValueLateBinding="true" />  
+        <set name="lang" useValueLateBinding="true" />  
+        <set name="style" useValueLateBinding="true" />  
+        <set name="title" useValueLateBinding="true" />  
+        <set name="styleClass" useValueLateBinding="true" /> 
+        
+        <!-- HTML 4.0 event-handler attributes --> 
+        <set name="onclick" useValueLateBinding="true" />  
+        <set name="ondblclick" useValueLateBinding="true" />  
+        <set name="onmousedown" useValueLateBinding="true" />  
+        <set name="onmouseup" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmousemove" useValueLateBinding="true" />  
+        <set name="onmouseout" useValueLateBinding="true" />  
+        <set name="onkeypress" useValueLateBinding="true" />  
+        <set name="onkeydown" useValueLateBinding="true" />  
+        <set name="onkeyup" useValueLateBinding="true" /> 
+
+        <set name="layout" useValueLateBinding="true" /> 
+
+      </attributes>  
+  </component>
 
   <!-- 
       Render a html "input" element of type "checkbox".
    -->    
-  <component jsfid="selectBooleanCheckbox" componentType="javax.faces.HtmlSelectBooleanCheckbox"/>
+  <component jsfid="selectBooleanCheckbox" componentType="javax.faces.HtmlSelectBooleanCheckbox">
+      <attributes>
+        <set name="rendered" useValueLateBinding="true" />
+        <set name="value" useValueLateBinding="true" />
+        <set name="converter" useMethodLateBinding="true" />
+        <set name="immediate" useValueLateBinding="true" />
+        <set name="validator" useMethodLateBinding="true" />
+        <set name="valueChangeListener" useMethodLateBinding="true" />
+        
+        <!-- HTML 4.0 input attributes -->
+        <set name="accesskey" useValueLateBinding="true" />
+        <set name="align" useValueLateBinding="true" />
+        <set name="alt" useValueLateBinding="true" />
+        <set name="datafld" useValueLateBinding="true" />
+        <set name="datasrc" useValueLateBinding="true" />
+        <set name="dataformatas" useValueLateBinding="true" />
+        <set name="disabled" useValueLateBinding="true" />
+        <set name="onblur" useValueLateBinding="true" />
+        <set name="onchange" useValueLateBinding="true" />
+        <set name="onfocus" useValueLateBinding="true" />
+        <set name="readonly" useValueLateBinding="true" />
+        <set name="onselect" useValueLateBinding="true" />
+        <set name="tabindex" useValueLateBinding="true" />
+ 
+         <!-- HTML 4.0 universal attributes -->
+        <set name="dir" useValueLateBinding="true" />  
+        <set name="lang" useValueLateBinding="true" />  
+        <set name="style" useValueLateBinding="true" />  
+        <set name="title" useValueLateBinding="true" />  
+        <set name="styleClass" useValueLateBinding="true" /> 
+        
+        <!-- HTML 4.0 event-handler attributes --> 
+        <set name="onclick" useValueLateBinding="true" />  
+        <set name="ondblclick" useValueLateBinding="true" />  
+        <set name="onmousedown" useValueLateBinding="true" />  
+        <set name="onmouseup" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmousemove" useValueLateBinding="true" />  
+        <set name="onmouseout" useValueLateBinding="true" />  
+        <set name="onkeypress" useValueLateBinding="true" />  
+        <set name="onkeydown" useValueLateBinding="true" />  
+        <set name="onkeyup" useValueLateBinding="true" />  
+      
+      </attributes>
+  </component>
 
   <!-- 
       Render a html "table" element.
    -->      
-  <component jsfid="panelGroup" componentType="javax.faces.HtmlPanelGroup"/>
+  <component jsfid="panelGroup" componentType="javax.faces.HtmlPanelGroup">
+      <attributes>
+         <set name="rendered" useValueLateBinding="true" />
+         
+         <!-- HTML 4.0 universal attributes -->
+        <set name="dir" useValueLateBinding="true" />  
+        <set name="lang" useValueLateBinding="true" />  
+        <set name="style" useValueLateBinding="true" />  
+        <set name="title" useValueLateBinding="true" />  
+        <set name="styleClass" useValueLateBinding="true" />  
+        
+        <!-- HTML 4.0 event-handler attributes --> 
+        <set name="onclick" useValueLateBinding="true" />  
+        <set name="ondblclick" useValueLateBinding="true" />  
+        <set name="onmousedown" useValueLateBinding="true" />  
+        <set name="onmouseup" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmousemove" useValueLateBinding="true" />  
+        <set name="onmouseout" useValueLateBinding="true" />  
+        <set name="onkeypress" useValueLateBinding="true" />  
+        <set name="onkeydown" useValueLateBinding="true" />  
+        <set name="onkeyup" useValueLateBinding="true" />  
+      
+      </attributes> 
+  </component>
 
   <!-- 
       Render a html "a" element.
    -->        
-  <component jsfid="outputLink" componentType="javax.faces.HtmlOutputLink"/>
+  <component jsfid="outputLink" componentType="javax.faces.HtmlOutputLink">
+     <attributes>
+        <set name="rendered" useValueLateBinding="true" />
+        <set name="value" useValueLateBinding="true" />
+        <set name="converter" useMethodLateBinding="true" />
+      
+         <!-- HTML 4.0 universal attributes -->
+        <set name="dir" useValueLateBinding="true" />  
+        <set name="lang" useValueLateBinding="true" />  
+        <set name="style" useValueLateBinding="true" />  
+        <set name="title" useValueLateBinding="true" />  
+        <set name="styleClass" useValueLateBinding="true" />  
+        
+        <!-- HTML 4.0 event-handler attributes --> 
+        <set name="onclick" useValueLateBinding="true" />  
+        <set name="ondblclick" useValueLateBinding="true" />  
+        <set name="onmousedown" useValueLateBinding="true" />  
+        <set name="onmouseup" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmousemove" useValueLateBinding="true" />  
+        <set name="onmouseout" useValueLateBinding="true" />  
+        <set name="onkeypress" useValueLateBinding="true" />  
+        <set name="onkeydown" useValueLateBinding="true" />  
+        <set name="onkeyup" useValueLateBinding="true" />  
+     
+        <!-- HTML 4.0 anchor (=a) attributes -->
+        <set name="accesskey" useValueLateBinding="true" />  
+        <set name="charset" useValueLateBinding="true" />  
+        <set name="coords" useValueLateBinding="true" />  
+        <set name="hreflang" useValueLateBinding="true" />  
+        <set name="rel" useValueLateBinding="true" />  
+        <set name="rev" useValueLateBinding="true" />  
+        <set name="shape" useValueLateBinding="true" />  
+        <set name="tabindex" useValueLateBinding="true" />  
+        <set name="type" useValueLateBinding="true" />  
+        <set name="onblur" useValueLateBinding="true" />  
+        <set name="onfocus" useValueLateBinding="true" />  
+        <set name="target" useValueLateBinding="true" />  
+     
+     </attributes>
+  </component>
 
   <!-- 
       Render a html "label" element.
    -->          
-  <component jsfid="outputLabel" componentType="javax.faces.HtmlOutputLabel"/>
+  <component jsfid="outputLabel" componentType="javax.faces.HtmlOutputLabel">
+       <attributes>
+        <set name="rendered" useValueLateBinding="true" />
+        <set name="value" useValueLateBinding="true" />
+        <set name="converter" useMethodLateBinding="true" />
+      
+         <!-- HTML 4.0 universal attributes -->
+        <set name="dir" useValueLateBinding="true" />  
+        <set name="lang" useValueLateBinding="true" />  
+        <set name="style" useValueLateBinding="true" />  
+        <set name="title" useValueLateBinding="true" />  
+        <set name="styleClass" useValueLateBinding="true" />  
+        
+        <!-- HTML 4.0 event-handler attributes --> 
+        <set name="onclick" useValueLateBinding="true" />  
+        <set name="ondblclick" useValueLateBinding="true" />  
+        <set name="onmousedown" useValueLateBinding="true" />  
+        <set name="onmouseup" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmousemove" useValueLateBinding="true" />  
+        <set name="onmouseout" useValueLateBinding="true" />  
+        <set name="onkeypress" useValueLateBinding="true" />  
+        <set name="onkeydown" useValueLateBinding="true" />  
+        <set name="onkeyup" useValueLateBinding="true" />  
+      
+        <!-- HTML 4.0 label attributes -->
+        <set name="accesskey" useValueLateBinding="true" /> 
+        <set name="onblur" useValueLateBinding="true" /> 
+        <set name="onfocus" useValueLateBinding="true" /> 
+        <set name="for" useValueLateBinding="true" /> 
+        
+       </attributes>
+  </component>
   
    <!-- 
       Render a html "textarea" element.
    -->        
-  <component jsfid="inputTextarea" componentType="javax.faces.HtmlInputTextarea"/>
+  <component jsfid="inputTextarea" componentType="javax.faces.HtmlInputTextarea">
+      <attributes>
+
+        <set name="rendered" useValueLateBinding="true" />
+        <set name="value" useValueLateBinding="true" />
+        <set name="converter" useMethodLateBinding="true" />
+        <set name="immediate" useValueLateBinding="true" />
+        <set name="validator" useMethodLateBinding="true" />
+        <set name="valueChangeListener" useMethodLateBinding="true" />
+        
+        <!-- HTML 4.0 input attributes -->
+        <set name="accesskey" useValueLateBinding="true" />
+        <set name="align" useValueLateBinding="true" />
+        <set name="alt" useValueLateBinding="true" />
+        <set name="datafld" useValueLateBinding="true" />
+        <set name="datasrc" useValueLateBinding="true" />
+        <set name="dataformatas" useValueLateBinding="true" />
+        <set name="disabled" useValueLateBinding="true" />
+        <set name="onblur" useValueLateBinding="true" />
+        <set name="onchange" useValueLateBinding="true" />
+        <set name="onfocus" useValueLateBinding="true" />
+        <set name="readonly" useValueLateBinding="true" />
+        <set name="onselect" useValueLateBinding="true" />
+        <set name="rows" useValueLateBinding="true" />
+        <set name="tabindex" useValueLateBinding="true" />
+ 
+         <!-- HTML 4.0 universal attributes -->
+        <set name="dir" useValueLateBinding="true" />  
+        <set name="lang" useValueLateBinding="true" />  
+        <set name="style" useValueLateBinding="true" />  
+        <set name="title" useValueLateBinding="true" />  
+        <set name="styleClass" useValueLateBinding="true" /> 
+        
+        <!-- HTML 4.0 event-handler attributes --> 
+        <set name="onclick" useValueLateBinding="true" />  
+        <set name="ondblclick" useValueLateBinding="true" />  
+        <set name="onmousedown" useValueLateBinding="true" />  
+        <set name="onmouseup" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmousemove" useValueLateBinding="true" />  
+        <set name="onmouseout" useValueLateBinding="true" />  
+        <set name="onkeypress" useValueLateBinding="true" />  
+        <set name="onkeydown" useValueLateBinding="true" />  
+        <set name="onkeyup" useValueLateBinding="true" />  
+      </attributes>
+  </component>
 
    <!-- 
       Render a html "input" element of type "password".
    -->        
-  <component jsfid="inputSecret" componentType="javax.faces.HtmlInputSecret"/>
+  <component jsfid="inputSecret" componentType="javax.faces.HtmlInputSecret">
+      <attributes>
+        <set name="rendered" useValueLateBinding="true" />
+        <set name="value" useValueLateBinding="true" />
+        <set name="converter" useMethodLateBinding="true" />
+        <set name="immediate" useValueLateBinding="true" />
+        <set name="validator" useMethodLateBinding="true" />
+        <set name="valueChangeListener" useMethodLateBinding="true" />
+        
+        <!-- HTML 4.0 input attributes -->
+        <set name="accesskey" useValueLateBinding="true" />
+        <set name="align" useValueLateBinding="true" />
+        <set name="alt" useValueLateBinding="true" />
+        <set name="datafld" useValueLateBinding="true" />
+        <set name="datasrc" useValueLateBinding="true" />
+        <set name="dataformatas" useValueLateBinding="true" />
+        <set name="disabled" useValueLateBinding="true" />
+        <set name="maxlength" useValueLateBinding="true" />
+        <set name="onblur" useValueLateBinding="true" />
+        <set name="onchange" useValueLateBinding="true" />
+        <set name="onfocus" useValueLateBinding="true" />
+        <set name="readonly" useValueLateBinding="true" />
+        <set name="onselect" useValueLateBinding="true" />
+        <set name="size" useValueLateBinding="true" />
+        <set name="tabindex" useValueLateBinding="true" />
+ 
+         <!-- HTML 4.0 universal attributes -->
+        <set name="dir" useValueLateBinding="true" />  
+        <set name="lang" useValueLateBinding="true" />  
+        <set name="style" useValueLateBinding="true" />  
+        <set name="title" useValueLateBinding="true" />  
+        <set name="styleClass" useValueLateBinding="true" /> 
+        
+        <!-- HTML 4.0 event-handler attributes --> 
+        <set name="onclick" useValueLateBinding="true" />  
+        <set name="ondblclick" useValueLateBinding="true" />  
+        <set name="onmousedown" useValueLateBinding="true" />  
+        <set name="onmouseup" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmousemove" useValueLateBinding="true" />  
+        <set name="onmouseout" useValueLateBinding="true" />  
+        <set name="onkeypress" useValueLateBinding="true" />  
+        <set name="onkeydown" useValueLateBinding="true" />  
+        <set name="onkeyup" useValueLateBinding="true" />  
+ 
+         <!-- SecretRenderer attributes -->
+        <set name="redisplay" useValueLateBinding="true" />  
+        
+      </attributes>
+  
+  </component>
 
   <!-- 
       Render a html "input" element of type "hidden".
    -->          
-  <component jsfid="inputHidden" componentType="javax.faces.HtmlInputHidden"/>
+  <component jsfid="inputHidden" componentType="javax.faces.HtmlInputHidden">
+       <attributes>
+        <set name="rendered" useValueLateBinding="true" />
+        <set name="value" useValueLateBinding="true" />
+        
+        <set name="converter" useMethodLateBinding="true" />
+        <set name="immediate" useValueLateBinding="true" />
+        <set name="validator" useMethodLateBinding="true" />
+        <set name="valueChangeListener" useMethodLateBinding="true" />
+       </attributes>  
+  </component>
 
   <!-- 
       Render a html "img" element.
    -->            
-  <component jsfid="image" componentType="javax.faces.HtmlGraphicImage"/>
+  <component jsfid="image" componentType="javax.faces.HtmlGraphicImage">
+       <attributes>
+        <set name="rendered" useValueLateBinding="true" />
+        <set name="url" useValueLateBinding="true" />
+        <set name="value" useValueLateBinding="true" />
+
+        <!-- HTML 4.0 universal attributes -->
+        <set name="dir" useValueLateBinding="true" />  
+        <set name="lang" useValueLateBinding="true" />  
+        <set name="style" useValueLateBinding="true" />  
+        <set name="title" useValueLateBinding="true" />  
+        <set name="styleClass" useValueLateBinding="true" /> 
+        
+        <!-- HTML 4.0 event-handler attributes --> 
+        <set name="onclick" useValueLateBinding="true" />  
+        <set name="ondblclick" useValueLateBinding="true" />  
+        <set name="onmousedown" useValueLateBinding="true" />  
+        <set name="onmouseup" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmousemove" useValueLateBinding="true" />  
+        <set name="onmouseout" useValueLateBinding="true" />  
+        <set name="onkeypress" useValueLateBinding="true" />  
+        <set name="onkeydown" useValueLateBinding="true" />  
+        <set name="onkeyup" useValueLateBinding="true" />  
+
+        <!-- HTML 4.0 img attributes -->
+        <set name="align" useValueLateBinding="true" />  
+        <set name="alt" useValueLateBinding="true" />  
+        <set name="border" useValueLateBinding="true" />  
+        <set name="height" useValueLateBinding="true" />  
+        <set name="hspace" useValueLateBinding="true" />  
+        <set name="ismap" useValueLateBinding="true" />  
+        <set name="longdesc" useValueLateBinding="true" />  
+        <set name="usemap" useValueLateBinding="true" />  
+        <set name="vspace" useValueLateBinding="true" />  
+        <set name="width" useValueLateBinding="true" />  
+       </attributes>
+  </component>
 
   <!-- 
       Render a html "form" element.
    -->              
-  <component jsfid="form" componentType="javax.faces.HtmlForm"/>
+  <component jsfid="form" componentType="javax.faces.HtmlForm">
+     <attributes>
+        <set name="rendered" useValueLateBinding="true" />
+        
+        <!-- HTML 4.0 universal attributes -->
+        <set name="dir" useValueLateBinding="true" />  
+        <set name="lang" useValueLateBinding="true" />  
+        <set name="style" useValueLateBinding="true" />  
+        <set name="title" useValueLateBinding="true" />  
+        <set name="styleClass" useValueLateBinding="true" /> 
+        
+        <!-- HTML 4.0 event-handler attributes --> 
+        <set name="onclick" useValueLateBinding="true" />  
+        <set name="ondblclick" useValueLateBinding="true" />  
+        <set name="onmousedown" useValueLateBinding="true" />  
+        <set name="onmouseup" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmousemove" useValueLateBinding="true" />  
+        <set name="onmouseout" useValueLateBinding="true" />  
+        <set name="onkeypress" useValueLateBinding="true" />  
+        <set name="onkeydown" useValueLateBinding="true" />  
+        <set name="onkeyup" useValueLateBinding="true" />  
+        
+        <!-- HTML 4.0 form attributes -->  
+        <set name="accept" useValueLateBinding="true" />  
+        <set name="acceptCharset" useValueLateBinding="true" />  
+        <set name="enctype" useValueLateBinding="true" />  
+        <set name="name" useValueLateBinding="true" />  
+        <set name="onreset" useValueLateBinding="true" />  
+        <set name="onsubmit" useValueLateBinding="true" />  
+        <set name="target" useValueLateBinding="true" />  
+        
+     </attributes>
+  </component>
 
   <!-- 
       Render a html "table" element.
    -->              
-  <component jsfid="dataTable" componentType="javax.faces.HtmlDataTable"/>
+  <component jsfid="dataTable" componentType="javax.faces.HtmlDataTable">
+     <attributes>
+        <set name="rendered" useValueLateBinding="true" />
+       
+        <!-- HTML 4.0 universal attributes -->
+        <set name="dir" useValueLateBinding="true" />  
+        <set name="lang" useValueLateBinding="true" />  
+        <set name="style" useValueLateBinding="true" />  
+        <set name="title" useValueLateBinding="true" />  
+        <set name="styleClass" useValueLateBinding="true" /> 
+        
+        <!-- HTML 4.0 event-handler attributes --> 
+        <set name="onclick" useValueLateBinding="true" />  
+        <set name="ondblclick" useValueLateBinding="true" />  
+        <set name="onmousedown" useValueLateBinding="true" />  
+        <set name="onmouseup" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmousemove" useValueLateBinding="true" />  
+        <set name="onmouseout" useValueLateBinding="true" />  
+        <set name="onkeypress" useValueLateBinding="true" />  
+        <set name="onkeydown" useValueLateBinding="true" />  
+        <set name="onkeyup" useValueLateBinding="true" />  
+        
+        <!-- HTML 4.0 table attributes -->
+        <set name="align" useValueLateBinding="true" />  
+        <set name="border" useValueLateBinding="true" />  
+        <set name="bgcolor" useValueLateBinding="true" />  
+        <set name="cellpadding" useValueLateBinding="true" />  
+        <set name="cellspacing" useValueLateBinding="true" />  
+        <set name="datafld" useValueLateBinding="true" />  
+        <set name="datasrc" useValueLateBinding="true" />  
+        <set name="dataformatas" useValueLateBinding="true" />  
+        <set name="frame" useValueLateBinding="true" />  
+        <set name="rules" useValueLateBinding="true" />  
+        <set name="summary" useValueLateBinding="true" />  
+        <set name="width" useValueLateBinding="true" />
+        <set name="value" useMethodLateBinding="true" />  
+        <set name="var" useMethodLateBinding="false" />  
+        <set name="rows" useMethodLateBinding="true" />  
+        <set name="first" useMethodLateBinding="true" />  
+        <set name="columnClasses" useMethodLateBinding="true" />  
+        <set name="footerClass" useMethodLateBinding="true" />  
+        <set name="headerClass" useMethodLateBinding="true" />  
+        <set name="rowClasses" useMethodLateBinding="true" />      
+     </attributes>
+  </component>
    <!-- 
       Render a html "input" element of type "button".
    -->            
-  <component jsfid="commandLink" componentType="javax.faces.HtmlCommandLink"/>
+  <component jsfid="commandLink" componentType="javax.faces.HtmlCommandLink">
+      <attributes>
+      <!-- UIComponent attributes -->
+      <set name="rendered" useValueLateBinding="true" />
+      <set name="action" useMethodLateBinding="true" /> 
+      <set name="actionListener" useMethodLateBinding="true" /> 
+      <set name="immediate" useValueLateBinding="true" /> 
+      <set name="value" useValueLateBinding="true" />  
+      
+       <!-- HTML 4.0 universal attributes -->
+      <set name="dir" useValueLateBinding="true" />  
+      <set name="lang" useValueLateBinding="true" />  
+      <set name="style" useValueLateBinding="true" />  
+      <set name="title" useValueLateBinding="true" />  
+      <set name="styleClass" useValueLateBinding="true" /> 
+      
+      <!-- HTML 4.0 event-handler attributes --> 
+      <set name="onclick" useValueLateBinding="true" />  
+      <set name="ondblclick" useValueLateBinding="true" />  
+      <set name="onmousedown" useValueLateBinding="true" />  
+      <set name="onmouseup" useValueLateBinding="true" />  
+      <set name="onmouseover" useValueLateBinding="true" />  
+      <set name="onmouseover" useValueLateBinding="true" />  
+      <set name="onmousemove" useValueLateBinding="true" />  
+      <set name="onmouseout" useValueLateBinding="true" />  
+      <set name="onkeypress" useValueLateBinding="true" />  
+      <set name="onkeydown" useValueLateBinding="true" />  
+      <set name="onkeyup" useValueLateBinding="true" />  
+  
+      <!-- HTML 4.0 anchor (=a) attributes -->
+      <set name="accesskey" useValueLateBinding="true" />  
+      <set name="coords" useValueLateBinding="true" />  
+      <set name="hreflang" useValueLateBinding="true" />  
+      <set name="rel" useValueLateBinding="true" />  
+      <set name="rev" useValueLateBinding="true" />  
+      <set name="shape" useValueLateBinding="true" />  
+      <set name="tabindex" useValueLateBinding="true" />  
+      <set name="type" useValueLateBinding="true" />  
+      <set name="onblur" useValueLateBinding="true" />  
+      <set name="onfocus" useValueLateBinding="true" />  
+      <set name="target" useValueLateBinding="true" />  
+     </attributes>
+  </component>
 
    <!-- 
       Defines a html "td" element within a "dataTable".
    -->              
-  <component jsfid="column" componentType="javax.faces.Column"/>
+  <component jsfid="column" componentType="javax.faces.Column">
+    <attributes>
+      <set name="rendered" useValueLateBinding="true" />
+      <set name="facetName" useValueLateBinding="true" /> 
+    </attributes>
+  </component>
 
    <!-- 
       Render a html "input" element of type "text".
    -->              
-  <component jsfid="inputText" componentType="javax.faces.HtmlInputText"/>
+  <component jsfid="inputText" componentType="javax.faces.HtmlInputText">
+    <attributes>
+        <set name="rendered" useValueLateBinding="true" />
+        <set name="value" useValueLateBinding="true" />
+        <set name="converter" useMethodLateBinding="true" />
+        <set name="immediate" useValueLateBinding="true" />
+        <set name="validator" useMethodLateBinding="true" />
+        <set name="valueChangeListener" useMethodLateBinding="true" />
+        
+        <!-- HTML 4.0 input attributes -->
+        <set name="accesskey" useValueLateBinding="true" />
+        <set name="align" useValueLateBinding="true" />
+        <set name="alt" useValueLateBinding="true" />
+        <set name="datafld" useValueLateBinding="true" />
+        <set name="datasrc" useValueLateBinding="true" />
+        <set name="dataformatas" useValueLateBinding="true" />
+        <set name="disabled" useValueLateBinding="true" />
+        <set name="maxlength" useValueLateBinding="true" />
+        <set name="onblur" useValueLateBinding="true" />
+        <set name="onchange" useValueLateBinding="true" />
+        <set name="onfocus" useValueLateBinding="true" />
+        <set name="readonly" useValueLateBinding="true" />
+        <set name="onselect" useValueLateBinding="true" />
+        <set name="size" useValueLateBinding="true" />
+        <set name="tabindex" useValueLateBinding="true" />
+ 
+         <!-- HTML 4.0 universal attributes -->
+        <set name="dir" useValueLateBinding="true" />  
+        <set name="lang" useValueLateBinding="true" />  
+        <set name="style" useValueLateBinding="true" />  
+        <set name="title" useValueLateBinding="true" />  
+        <set name="styleClass" useValueLateBinding="true" /> 
+        
+        <!-- HTML 4.0 event-handler attributes --> 
+        <set name="onclick" useValueLateBinding="true" />  
+        <set name="ondblclick" useValueLateBinding="true" />  
+        <set name="onmousedown" useValueLateBinding="true" />  
+        <set name="onmouseup" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmousemove" useValueLateBinding="true" />  
+        <set name="onmouseout" useValueLateBinding="true" />  
+        <set name="onkeypress" useValueLateBinding="true" />  
+        <set name="onkeydown" useValueLateBinding="true" />  
+        <set name="onkeyup" useValueLateBinding="true" />  
+
+        <set name="escape" useValueLateBinding="true" />  
+    </attributes>
+  </component>
 
    <!-- 
       Render a readonly text value substituting inline string parameters.  
    -->                
-  <component jsfid="outputFormat" componentType="javax.faces.HtmlOutputFormat"/>
+  <component jsfid="outputFormat" componentType="javax.faces.HtmlOutputFormat">
+      <attributes>
+        <set name="rendered" useValueLateBinding="true" />
+        <set name="value" useValueLateBinding="true" />
+        <set name="converter" useMethodLateBinding="true" />
+      
+         <!-- HTML 4.0 universal attributes -->
+        <set name="dir" useValueLateBinding="true" />  
+        <set name="lang" useValueLateBinding="true" />  
+        <set name="style" useValueLateBinding="true" />  
+        <set name="title" useValueLateBinding="true" />  
+        <set name="styleClass" useValueLateBinding="true" />  
+        
+        <!-- HTML 4.0 event-handler attributes --> 
+        <set name="onclick" useValueLateBinding="true" />  
+        <set name="ondblclick" useValueLateBinding="true" />  
+        <set name="onmousedown" useValueLateBinding="true" />  
+        <set name="onmouseup" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmousemove" useValueLateBinding="true" />  
+        <set name="onmouseout" useValueLateBinding="true" />  
+        <set name="onkeypress" useValueLateBinding="true" />  
+        <set name="onkeydown" useValueLateBinding="true" />  
+        <set name="onkeyup" useValueLateBinding="true" />  
+        <set name="escape" useValueLateBinding="true" />      
+      </attributes>
+      
+  </component>
   
    <!-- 
       Render a set of readonly text messages.  
    -->                  
-  <component jsfid="messages" componentType="javax.faces.HtmlMessages"/>	
+  <component jsfid="messages" componentType="javax.faces.HtmlMessages">
+    <attributes>
+      <set name="rendered" useValueLateBinding="true" />
+      <set name="showSummary" useValueLateBinding="true" />
+      <set name="showDetail" useValueLateBinding="true" />
+      <set name="globalOnly" useValueLateBinding="true" />
+      
+      <set name="infoClass" useValueLateBinding="true" />
+      <set name="infoStyle" useValueLateBinding="true" />
+      <set name="warnClass" useValueLateBinding="true" />
+      <set name="warnStyle" useValueLateBinding="true" />
+      <set name="errorClass" useValueLateBinding="true" />
+      <set name="errorStyle" useValueLateBinding="true" />
+      <set name="fatalClass" useValueLateBinding="true" />
+      <set name="fatalStyle" useValueLateBinding="true" />
+      <set name="tooltip" useValueLateBinding="true" />
+      <set name="layout" useValueLateBinding="true" />
+ 
+        <!-- HTML 4.0 universal attributes -->
+      <set name="dir" useValueLateBinding="true" />  
+      <set name="lang" useValueLateBinding="true" />  
+      <set name="style" useValueLateBinding="true" />  
+      <set name="title" useValueLateBinding="true" />  
+      <set name="styleClass" useValueLateBinding="true" /> 
+      
+      <!-- HTML 4.0 event-handler attributes --> 
+      <set name="onclick" useValueLateBinding="true" />  
+      <set name="ondblclick" useValueLateBinding="true" />  
+      <set name="onmousedown" useValueLateBinding="true" />  
+      <set name="onmouseup" useValueLateBinding="true" />  
+      <set name="onmouseover" useValueLateBinding="true" />  
+      <set name="onmouseover" useValueLateBinding="true" />  
+      <set name="onmousemove" useValueLateBinding="true" />  
+      <set name="onmouseout" useValueLateBinding="true" />  
+      <set name="onkeypress" useValueLateBinding="true" />  
+      <set name="onkeydown" useValueLateBinding="true" />  
+      <set name="onkeyup" useValueLateBinding="true" />      
+    </attributes>  
+  </component>	
 
    <!-- 
       Render a readonly text messages associated with an "input" element.   
    -->                    
-  <component jsfid="message" componentType="javax.faces.HtmlMessage"/>	
+  <component jsfid="message" componentType="javax.faces.HtmlMessage">
+    <attributes>
+      <set name="rendered" useValueLateBinding="true" />
+      <set name="for" useValueLateBinding="true" />
+      <set name="showSummary" useValueLateBinding="true" />
+      <set name="showDetail" useValueLateBinding="true" />
+      <set name="infoClass" useValueLateBinding="true" />
+      <set name="infoStyle" useValueLateBinding="true" />
+      <set name="warnClass" useValueLateBinding="true" />
+      <set name="warnStyle" useValueLateBinding="true" />
+      <set name="errorClass" useValueLateBinding="true" />
+      <set name="errorStyle" useValueLateBinding="true" />
+      <set name="fatalClass" useValueLateBinding="true" />
+      <set name="fatalStyle" useValueLateBinding="true" />
+      <set name="tooltip" useValueLateBinding="true" />
+
+       <!-- HTML 4.0 universal attributes -->
+      <set name="dir" useValueLateBinding="true" />  
+      <set name="lang" useValueLateBinding="true" />  
+      <set name="style" useValueLateBinding="true" />  
+      <set name="title" useValueLateBinding="true" />  
+      <set name="styleClass" useValueLateBinding="true" /> 
+      
+      <!-- HTML 4.0 event-handler attributes --> 
+      <set name="onclick" useValueLateBinding="true" />  
+      <set name="ondblclick" useValueLateBinding="true" />  
+      <set name="onmousedown" useValueLateBinding="true" />  
+      <set name="onmouseup" useValueLateBinding="true" />  
+      <set name="onmouseover" useValueLateBinding="true" />  
+      <set name="onmouseover" useValueLateBinding="true" />  
+      <set name="onmousemove" useValueLateBinding="true" />  
+      <set name="onmouseout" useValueLateBinding="true" />  
+      <set name="onkeypress" useValueLateBinding="true" />  
+      <set name="onkeydown" useValueLateBinding="true" />  
+      <set name="onkeyup" useValueLateBinding="true" />  
+    </attributes>  
+  </component>	
 
    <!-- 
       Render a html "input" element of type "submit".
    -->                
-  <component jsfid="commandButton" componentType="javax.faces.HtmlCommandButton"/>	
+  <component jsfid="commandButton" componentType="javax.faces.HtmlCommandButton">
+    <attributes>
+      <!-- UIComponent attributes -->
+      <set name="rendered" useValueLateBinding="true" />
+      <set name="action" useMethodLateBinding="true" /> 
+      <set name="actionListener" useMethodLateBinding="true" /> 
+      <set name="immediate" useValueLateBinding="true" /> 
+      <set name="value" useValueLateBinding="true" />  
+      
+       <!-- HTML 4.0 universal attributes -->
+      <set name="dir" useValueLateBinding="true" />  
+      <set name="lang" useValueLateBinding="true" />  
+      <set name="style" useValueLateBinding="true" />  
+      <set name="title" useValueLateBinding="true" />  
+      <set name="styleClass" useValueLateBinding="true" /> 
+      
+      <!-- HTML 4.0 event-handler attributes --> 
+      <set name="onclick" useValueLateBinding="true" />  
+      <set name="ondblclick" useValueLateBinding="true" />  
+      <set name="onmousedown" useValueLateBinding="true" />  
+      <set name="onmouseup" useValueLateBinding="true" />  
+      <set name="onmouseover" useValueLateBinding="true" />  
+      <set name="onmouseover" useValueLateBinding="true" />  
+      <set name="onmousemove" useValueLateBinding="true" />  
+      <set name="onmouseout" useValueLateBinding="true" />  
+      <set name="onkeypress" useValueLateBinding="true" />  
+      <set name="onkeydown" useValueLateBinding="true" />  
+      <set name="onkeyup" useValueLateBinding="true" />  
+      
+      <!-- HTML 4.0 button attributes -->
+      <set name="accesskey" useValueLateBinding="true" />  
+      <set name="alt" useValueLateBinding="true" />  
+      <set name="disabled" useValueLateBinding="true" />  
+      <set name="onblur" useValueLateBinding="true" />  
+      <set name="onchange" useValueLateBinding="true" />  
+      <set name="onfocus" useValueLateBinding="true" />  
+      <set name="onselect" useValueLateBinding="true" />  
+      <set name="size" useValueLateBinding="true" />  
+      <set name="tabindex" useValueLateBinding="true" />  
+      <set name="type" useValueLateBinding="true" />  
+
+      <!-- HtmlCommandButton attributes -->
+      <set name="image" useValueLateBinding="true" />  
+    </attributes>
+  </component>	
 
    <!-- 
       Render a html "table" element.
    -->                  
-  <component jsfid="panelGrid" componentType="javax.faces.HtmlPanelGrid" />
+  <component jsfid="panelGrid" componentType="javax.faces.HtmlPanelGrid">
+     <attributes>
+        <set name="value" useValueLateBinding="true" />  
+        <set name="rendered" useValueLateBinding="true" />
+      
+        <!-- HTML 4.0 universal attributes -->
+        <set name="dir" useValueLateBinding="true" />  
+        <set name="lang" useValueLateBinding="true" />  
+        <set name="style" useValueLateBinding="true" />  
+        <set name="title" useValueLateBinding="true" />  
+        <set name="styleClass" useValueLateBinding="true" />  
+        
+        <!-- HTML 4.0 event-handler attributes --> 
+        <set name="onclick" useValueLateBinding="true" />  
+        <set name="ondblclick" useValueLateBinding="true" />  
+        <set name="onmousedown" useValueLateBinding="true" />  
+        <set name="onmouseup" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmouseover" useValueLateBinding="true" />  
+        <set name="onmousemove" useValueLateBinding="true" />  
+        <set name="onmouseout" useValueLateBinding="true" />  
+        <set name="onkeypress" useValueLateBinding="true" />  
+        <set name="onkeydown" useValueLateBinding="true" />  
+        <set name="onkeyup" useValueLateBinding="true" />  
+        
+        <!-- HTML 4.0 table attributes -->
+        <set name="align" useValueLateBinding="true" />  
+        <set name="border" useValueLateBinding="true" />  
+        <set name="bgcolor" useValueLateBinding="true" />  
+        <set name="cellpadding" useValueLateBinding="true" />  
+        <set name="cellspacing" useValueLateBinding="true" />  
+        <set name="datafld" useValueLateBinding="true" />  
+        <set name="datasrc" useValueLateBinding="true" />  
+        <set name="dataformatas" useValueLateBinding="true" />  
+        <set name="frame" useValueLateBinding="true" />  
+        <set name="rules" useValueLateBinding="true" />  
+        <set name="summary" useValueLateBinding="true" />  
+        <set name="width" useValueLateBinding="true" />  
+        
+        <!-- GridRenderer attributes -->
+        <set name="columnClasses" useValueLateBinding="true" />  
+        <set name="columns" useValueLateBinding="true" />  
+        <set name="footerClass" useValueLateBinding="true" />  
+        <set name="headerClass" useValueLateBinding="true" />  
+        <set name="rowClasses" useValueLateBinding="true" />   
+     </attributes>
+  </component>
 
    <!-- 
       Not associated with an html element. 
@@ -191,7 +1118,10 @@
    -->                            
   <component jsfid="dateTimeConverter" componentType="javax.faces.DateTime" >
     <attributes>
-      <set name="pattern" value="MM/dd/yyyy" />
+      <set name="dateStyle" useValueLateBinding="true" />
+      <set name="pattern" useValueLateBinding="true"/>
+      <set name="timeStyle" useValueLateBinding="true"/>
+      <set name="type" useValueLateBinding="true"/> 
     </attributes>	
   </component>
 
@@ -209,10 +1139,13 @@
   <!-- Nested Clay Component -->    
   <component jsfid="clay" componentType="org.apache.shale.clay.component.Clay" 
        allowBody="false">
-    <attributes>
+    <attributes>
+      <set name="rendered" useValueLateBinding="true" />    
       <set name="jsfid" value="RUNTIME"/>
-      <set name="managedBeanName" useValueLateBinding="false"/>
-      <set name="shapeValidator" useMethodLateBinding="true"/> 
+      <set name="managedBeanName" useValueLateBinding="false"/>
+      <!--  
+      <set name="shapeValidator" useMethodLateBinding="true"/> 
+      -->
     </attributes>
   </component>	
 

Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/Clay.java
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/Clay.java?rev=289140&r1=289139&r2=289140&view=diff
==============================================================================
--- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/Clay.java (original)
+++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/Clay.java Wed Sep 14 20:56:06 2005
@@ -207,10 +207,10 @@
                     .getMessage("clay.config.notloaded"));
         
         // find the top-level display element associated with the subtree
-        ComponentBean b = (ComponentBean) config.getElement(jsfid);
+        ComponentBean b = (ComponentBean) config.getElement(getJsfid());
         if (b == null)
             throw new NullPointerException(messages.getMessage(
-                    "clay.jsfid.notfound", new Object[] { jsfid }));
+                    "clay.jsfid.notfound", new Object[] { getJsfid() }));
                     
                     return b;
     }

Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/AssignPropertiesCommand.java
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/AssignPropertiesCommand.java?rev=289140&r1=289139&r2=289140&view=diff
==============================================================================
--- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/AssignPropertiesCommand.java (original)
+++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/AssignPropertiesCommand.java Wed Sep 14 20:56:06 2005
@@ -80,8 +80,11 @@
         Catalog catalog = getCatalog();
         Command command = catalog
                 .getCommand(Globals.SET_ATTRIBUTE_COMMAND_NAME);
-        while (ai.hasNext()) {
+        next: while (ai.hasNext()) {
             AttributeBean a = (AttributeBean) ai.next();
+            if (a.getValue() == null)
+               continue next;
+            
             clayContext.setAttribute(a);
             
             try {

Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/PropertyActionCommand.java
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/PropertyActionCommand.java?rev=289140&r1=289139&r2=289140&view=diff
==============================================================================
--- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/PropertyActionCommand.java (original)
+++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/PropertyActionCommand.java Wed Sep 14 20:56:06 2005
@@ -88,7 +88,7 @@
         if (tagUtils == null)
             throw new NullPointerException(messages.getMessage("clay.null.tagUtils"));
 
-        if (attributeBean.getName().equals("action")) {
+        if (attributeBean.getName().equals("action") && attributeBean.getValue() != null) {
             isFinal = true;
             
             UIComponent child = (UIComponent) clayContext.getChild();

Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/PropertyActionListenerCommand.java
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/PropertyActionListenerCommand.java?rev=289140&r1=289139&r2=289140&view=diff
==============================================================================
--- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/PropertyActionListenerCommand.java (original)
+++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/PropertyActionListenerCommand.java Wed Sep 14 20:56:06 2005
@@ -77,7 +77,7 @@
         if (facesContext == null)
             throw new NullPointerException(messages.getMessage("clay.null.facesContext"));
         
-        if (attributeBean.getName().equals("actionListener")) {
+        if (attributeBean.getName().equals("actionListener") && attributeBean.getValue() != null) {
             isFinal = true;
             
             UIComponent child = (UIComponent) clayContext.getChild();

Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/PropertyValidatorCommand.java
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/PropertyValidatorCommand.java?rev=289140&r1=289139&r2=289140&view=diff
==============================================================================
--- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/PropertyValidatorCommand.java (original)
+++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/PropertyValidatorCommand.java Wed Sep 14 20:56:06 2005
@@ -76,7 +76,7 @@
         FacesContext facesContext = clayContext.getFacesContext();
         if (facesContext == null)
             throw new NullPointerException(messages.getMessage("clay.null.facesContext"));
-        if (attributeBean.getName().equals("validator")) {
+        if (attributeBean.getName().equals("validator") && attributeBean.getValue() != null) {
             isFinal = true;
             
             UIComponent child = (UIComponent) clayContext.getChild();

Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/PropertyValueChangeListenerCommand.java
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/PropertyValueChangeListenerCommand.java?rev=289140&r1=289139&r2=289140&view=diff
==============================================================================
--- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/PropertyValueChangeListenerCommand.java (original)
+++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/PropertyValueChangeListenerCommand.java Wed Sep 14 20:56:06 2005
@@ -76,7 +76,7 @@
         FacesContext facesContext = clayContext.getFacesContext();
         if (facesContext == null)
             throw new NullPointerException(messages.getMessage("clay.null.facesContext"));
-        if (attributeBean.getName().equals("valueChangeListener")) {
+        if (attributeBean.getName().equals("valueChangeListener") && attributeBean.getValue() != null) {
             isFinal = true;
             
             UIComponent child = (UIComponent) clayContext.getChild();

Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/PropertyValueCommand.java
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/PropertyValueCommand.java?rev=289140&r1=289139&r2=289140&view=diff
==============================================================================
--- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/PropertyValueCommand.java (original)
+++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/PropertyValueCommand.java Wed Sep 14 20:56:06 2005
@@ -98,7 +98,7 @@
                 
                 ((UIComponent) child).setValueBinding(attributeBean.getName(), binding);
                 
-            } else if (attributeBean.useMethodLateBinding()) {
+            } else if (attributeBean.useMethodLateBinding() && child instanceof UIComponent) {
                 // Should pass a method value binding expressions to the components 
                 // that use non-standard names like the clay component's shapValidator 
                 // method binding expression.  Standard method binding properties will
@@ -118,12 +118,18 @@
                     // an attribute that has no corresponding component property. 
                     // After all, clay can be shaped into anything - it's all good.
                     log.error(e);
-                    ((UIComponent) child).getAttributes().put(attributeBean.getName(), expr);       
+                    if (child instanceof UIComponent)
+                       ((UIComponent) child).getAttributes().put(attributeBean.getName(), expr);       
                 }
                 
             }
-        } else {
-            PropUtils.setProperty(child, attributeBean.getName(), attributeBean.getValue());
+        } else if (attributeBean.getValue() != null) {
+            try {
+               PropUtils.setProperty(child, attributeBean.getName(), attributeBean.getValue());
+            } catch (Exception e) {
+                log.error(e);
+                ((UIComponent) child).getAttributes().put(attributeBean.getName(), attributeBean.getValue());       
+            }
         }
         
         return isFinal;

Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/shale-clay-config.xml
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/shale-clay-config.xml?rev=289140&r1=289139&r2=289140&view=diff
==============================================================================
--- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/shale-clay-config.xml (original)
+++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/chain/shale-clay-config.xml Wed Sep 14 20:56:06 2005
@@ -29,7 +29,6 @@
              name        = "createComponent"
              optional    = "false"/>
              
-    <command  className="org.apache.shale.clay.component.chain.AssignPropertiesCommand"/>
     <command  className="org.apache.shale.clay.component.chain.AssignChildrenCommand"/>
 		
   </chain>
@@ -40,7 +39,8 @@
     <command  className="org.apache.shale.clay.component.chain.CreateComponentCommand"/>
     <command  className="org.apache.shale.clay.component.chain.AssignValidatorsCommand"/>
     <command  className="org.apache.shale.clay.component.chain.AssignValueChangeListenersCommand"/>
-    <command  className="org.apache.shale.clay.component.chain.AssignActionListenersCommand"/>
+    <command  className="org.apache.shale.clay.component.chain.AssignActionListenersCommand"/>
+    <command  className="org.apache.shale.clay.component.chain.AssignPropertiesCommand"/> 
     <command  className="org.apache.shale.clay.component.chain.AssignConverterCommand"/>
 
   </chain>

Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/config/Globals.java
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/config/Globals.java?rev=289140&r1=289139&r2=289140&view=diff
==============================================================================
--- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/config/Globals.java (original)
+++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/config/Globals.java Wed Sep 14 20:56:06 2005
@@ -164,35 +164,7 @@
      */
     public static final String BUILDER_RESOURCE_NAME = "org/apache/shale/clay/parser/builder/chain/shale-builder-config.xml";
     
-    /**
-     * <p>A constants array of attribute names used by the faces components
-     * as method binding events.</p
-     */
-    public static final String[] METHOD_ATTRIBUTES = { "converter",
-        "validator", "valueChangeListener", "action", "actionListener" };
-    
-    /**
-     * <p>A constants array of attribute names used by the faces components
-     * to define additional behavior using a value binding expression.</b>
-     */
-    public static final String[] VALUE_ATTRIBUTES = { "value", "for",
-        "immediate", "rendered", "required", "disabledClass",
-    "enabledClass" };
-    
-    /**
-     * <p>A constants array of component attributes that are HTML related. This
-     * list is used by the abstract {@link org.apache.shale.clay.parser.builder.Builder}
-     * to override component attributes defined in the view XML files.
-     * </p>
-     */
-    public static final String[] HTML_ATTRIBUTES = { "accesskey", "dir",
-        "disabled", "lang", "onblur", "onchange", "onclick", "ondblclick",
-        "onfocus", "onkeydown", "onkeypress", "onkeyup", "onmousedown",
-        "onmousemove", "onmouseout", "onmouseover", "onmouseup",
-        "onselect", "readonly", "size", "style", "styleClass", "tabindex",
-        "title", };
-    
-      
+         
     /**
      * <p>The Map key used by the {@link org.apache.shale.clay.config.beans.ComponentConfigBean} to identify the 
      * {@link org.apache.shale.clay.config.beans.ComponentConfigBean$WatchDog} 

Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/config/beans/AttributeBean.java
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/config/beans/AttributeBean.java?rev=289140&r1=289139&r2=289140&view=diff
==============================================================================
--- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/config/beans/AttributeBean.java (original)
+++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/config/beans/AttributeBean.java Wed Sep 14 20:56:06 2005
@@ -159,12 +159,13 @@
      * method binding expression and should be invoked by the component</p>
      */
     public boolean useMethodLateBinding() {
+        boolean flag = true;
         try {
-            return Boolean.valueOf(methodLateBinding).booleanValue();
+            flag = Boolean.valueOf(methodLateBinding).booleanValue();
         } catch (RuntimeException e) {
         }
         
-        return true;
+        return flag;
     }
    
     /**
@@ -188,12 +189,13 @@
      * value binding expression and should be invoked by the component</p>
      */    
     public boolean useValueLateBinding() {
+        boolean flag = true;
         try {
-            return Boolean.valueOf(valueLateBinding).booleanValue();
+            flag = Boolean.valueOf(valueLateBinding).booleanValue();
         } catch (RuntimeException e) {
         }
         
-        return true;
+        return flag;
     }
   
     /**

Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/config/beans/TemplateConfigBean.java
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/config/beans/TemplateConfigBean.java?rev=289140&r1=289139&r2=289140&view=diff
==============================================================================
--- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/config/beans/TemplateConfigBean.java (original)
+++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/config/beans/TemplateConfigBean.java Wed Sep 14 20:56:06 2005
@@ -51,17 +51,18 @@
      * web application</p>
      */
     public ComponentBean getElement(String templateName) {
-        
+      
+        StringBuffer jsfid = new StringBuffer(templateName);
+        if (jsfid.length() > 0 &&  jsfid.charAt(0) != '/') 
+          jsfid.insert(0, '/');
+
         // look for a watcher identified by the template name
-        WatchDog watchDog = (WatchDog) watchDogs.get(templateName);
-        if (watchDog == null) {
+        WatchDog watchDog = (WatchDog) watchDogs.get(jsfid.toString());
+        if (watchDog == null || super.getElement(jsfid.toString()) == null) {
            //The first time the page is created, create a watcher 
-            
-           StringBuffer uri = new StringBuffer(templateName);
-           if (uri.length() > 0 &&  uri.charAt(0) != '/') 
-             uri.insert(0, '/');
+             
            
-           watchDog = new WatchDog(getConfigDefinitions(uri.toString()), templateName);
+           watchDog = new WatchDog(getConfigDefinitions(jsfid.toString()), jsfid.toString());
            
            // register by name
            watchDogs.put(watchDog.getName(), watchDog);
@@ -72,7 +73,7 @@
         watchDog.refresh();
         
         // returns the cached element
-        return super.getElement(templateName);
+        return super.getElement(jsfid.toString());
     }
     
     

Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/faces/ClayViewHandler.java
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/faces/ClayViewHandler.java?rev=289140&r1=289139&r2=289140&view=diff
==============================================================================
--- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/faces/ClayViewHandler.java (original)
+++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/faces/ClayViewHandler.java Wed Sep 14 20:56:06 2005
@@ -124,7 +124,7 @@
             buff.setLength(i);
             buff.append(suffix);
         }
-        
+                
         return buff.toString();
       
     }

Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/Builder.java
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/Builder.java?rev=289140&r1=289139&r2=289140&view=diff
==============================================================================
--- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/Builder.java (original)
+++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/Builder.java Wed Sep 14 20:56:06 2005
@@ -19,14 +19,14 @@
 package org.apache.shale.clay.parser.builder;
 
 import java.util.Iterator;
+import java.util.Map;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.shale.clay.config.Globals;
 import org.apache.shale.clay.config.beans.AttributeBean;
+import org.apache.shale.clay.config.beans.ComponentBean;
 import org.apache.shale.clay.config.beans.ConfigBean;
 import org.apache.shale.clay.config.beans.ConfigBeanFactory;
-import org.apache.shale.clay.config.beans.ComponentBean;
 import org.apache.shale.clay.config.beans.ElementBean;
 import org.apache.shale.clay.parser.Node;
 import org.apache.shale.util.Messages;
@@ -147,6 +147,7 @@
         AttributeBean attr = new AttributeBean();
         attr.setName(key);
         attr.setValue(value);
+        attr.setUseValueLateBinding(Boolean.TRUE.toString());
         target.addAttribute(attr);
         return attr;
     }
@@ -230,18 +231,6 @@
                 
     }
 
-    /**
-     * <p>
-     * Returns a <code>String</code> array of html attribute names from
-     * <code>Globals.HTML_ATTRIBUTES</code>. These values will override any
-     * attribute defined in the XML configuration file for a defined component. A
-     * builder might override this method if certain attributes should be
-     * ignored for a particular Builder.
-     * </p>
-     */    
-    protected String[] getHtmlAttributes() {
-        return Globals.HTML_ATTRIBUTES;
-    }
  
     /**
      * <p>
@@ -292,13 +281,31 @@
      */    
     protected void assignAttributes(Node node, ElementBean target) {
         // override with html attributes
-        String[] attrs = getHtmlAttributes();
-        for (int i = 0; i < attrs.length; i++) {
-            if (node.getAttributes().containsKey(attrs[i])) {
-                String value = (String) node.getAttributes().get(attrs[i]);
-                AttributeBean attr = createAttribute(attrs[i], value, target);
+       
+        Iterator ai = target.getAttributes().entrySet().iterator();
+        while (ai.hasNext()) {
+            Map.Entry e = (Map.Entry) ai.next();
+            AttributeBean attr = (AttributeBean) e.getValue();
+            if (!attr.getName().equals("jsfid") && node.getAttributes().containsKey(attr.getName())) {
+                String value = (String) node.getAttributes().get(attr.getName());
+                if (value != null) 
+                   createAttribute(attr.getName(), value, target);
             }
         }
+
+        
+        if (node.getAttributes().containsKey("allowBody")) 
+           target.setAllowBody((String) node.getAttributes().get("allowBody"));
+        
+        if (node.getAttributes().containsKey("facetName")) 
+            target.setAllowBody((String) node.getAttributes().get("facetName"));
+
+        if (node.getAttributes().containsKey("componentType")) 
+            target.setAllowBody((String) node.getAttributes().get("componentType"));
+
+        if (node.getAttributes().containsKey("id")) 
+            target.setAllowBody((String) node.getAttributes().get("id"));
+
         
     }
     

Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/CommandButtonBuilder.java
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/CommandButtonBuilder.java?rev=289140&r1=289139&r2=289140&view=diff
==============================================================================
--- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/CommandButtonBuilder.java (original)
+++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/CommandButtonBuilder.java Wed Sep 14 20:56:06 2005
@@ -60,20 +60,5 @@
     protected String getComponentType(Node node) {
         return "javax.faces.HtmlCommandButton";
     }
-
-    /**
-     * <p>Add the <code>value</code> attribute as a "HTML" attribute. For the
-     * commandButton, the value holds the label.</p>
-     */
-    protected String[] getHtmlAttributes() {
-        
-        String[] tmp = super.getHtmlAttributes();
-        String[] attrs = new String[tmp.length + 1];
-        System.arraycopy(tmp, 0, attrs, 0, tmp.length);
-        attrs[attrs.length - 1] = "value";
-        
-        return attrs;
-    }
- 
         
 }

Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/VerbatimBuilder.java
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/VerbatimBuilder.java?rev=289140&r1=289139&r2=289140&view=diff
==============================================================================
--- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/VerbatimBuilder.java (original)
+++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/VerbatimBuilder.java Wed Sep 14 20:56:06 2005
@@ -71,7 +71,8 @@
         
         attr = createAttribute("value", value, target);
         
-        attr.setUseValueLateBinding(Boolean.FALSE.toString());
+        attr.setUseMethodLateBinding(Boolean.FALSE.toString());
+        attr.setUseValueLateBinding(Boolean.TRUE.toString());        
         createAttribute("escape", Boolean.FALSE.toString(), target);
         createAttribute("isTransient", Boolean.TRUE.toString(), target);
 

Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/DefaultBuilderRule.java
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/DefaultBuilderRule.java?rev=289140&r1=289139&r2=289140&view=diff
==============================================================================
--- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/DefaultBuilderRule.java (original)
+++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/DefaultBuilderRule.java Wed Sep 14 20:56:06 2005
@@ -24,6 +24,7 @@
 import org.apache.shale.clay.parser.builder.Builder;
 import org.apache.shale.clay.parser.builder.BuilderFactory;
 import org.apache.shale.clay.parser.builder.CommentBuilder;
+import org.apache.shale.clay.parser.builder.MorphBuilder;
 import org.apache.shale.clay.parser.builder.OutputLinkBuilder;
 import org.apache.shale.clay.parser.builder.VerbatimBuilder;
 
@@ -45,16 +46,16 @@
      * Default static instance of {@link VerbatimBuilder}
      * <p>
      */    
-    private static final Builder[] builders = {new CommentBuilder(), new VerbatimBuilder()};
+    private static final Builder[] builders = {new CommentBuilder(), new MorphBuilder(), new VerbatimBuilder()};
   
     /**
      * <p>
      * Uses the {@link BuilderRuleContext} to find the current html
      * {@link org.apache.shale.clay.parser.Node}. This is the default rule that
-     * will return a {@link VerbatimBuilder} when the node is not a comment.  
-     * When the html node is the start of a comment, the {@link CommentBuilder}
-     * with handle creating the correct {@link org.apache.shale.clay.config.beans.ElementBean}
-     * used to create a faces component.
+     * will return a {@link VerbatimBuilder} when the node is not a comment or
+     * has a <code>jsfid</code> attribute. When the html node is a 
+     * comment, the {@link CommentBuilder} is returned.  If the node is not a comment
+     * but has a <code>jsfid</code> attribute, the {@link MorphBuilder} is returned. 
      * </p>
      */    
     public boolean execute(Context context) throws Exception {
@@ -62,10 +63,12 @@
 
         BuilderRuleContext builderRuleContext = (BuilderRuleContext) context;
         Node node = builderRuleContext.getNode();
-        if (node.getName() != null && node.getName().equalsIgnoreCase("--")) {
-            builderRuleContext.setBuilder(builders[0]);      
+        if (node.getName() != null && node.isComment()) {
+            builderRuleContext.setBuilder(builders[0]);   
+        } else  if (node.getName() != null && node.getAttributes().containsKey("jsfid")) {
+            builderRuleContext.setBuilder(builders[1]);     
         } else {
-            builderRuleContext.setBuilder(builders[1]);
+            builderRuleContext.setBuilder(builders[2]);
         }
         
         return true;

Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/SpanBuilderRule.java
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/SpanBuilderRule.java?rev=289140&r1=289139&r2=289140&view=diff
==============================================================================
--- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/SpanBuilderRule.java (original)
+++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/SpanBuilderRule.java Wed Sep 14 20:56:06 2005
@@ -28,7 +28,7 @@
  * <p>
  * This <code>Command</code> rule matches a html span {@link Node} to a
  * {@link MorphBuilder}. This rule is different in that <code>jsfid</code> is
- * used to find the target compoentType to replace the html span tag. If a
+ * used to find the target componentType to replace the html span tag. If a
  * <code>jsfid</code> is not found as an attribute in the html {@link Node},
  * no match is made.
  * <p>
@@ -46,8 +46,8 @@
     /**
      * <p>
      * Returns a <code>true</code> value, ending the chain execution if the
-     * html {@link Node} is a span and there is a <code>jsfid</code> html
-     * attribute.
+     * html {@link Node} has a <code>jsfid</code> html attribute and is a span
+     * HTML element. 
      * </p>
      */    
     public boolean execute(Context context) throws Exception {
@@ -55,8 +55,8 @@
         
         BuilderRuleContext builderRuleContext = (BuilderRuleContext) context;
         Node node = builderRuleContext.getNode();
-        if (node.getName() != null && node.getName().equalsIgnoreCase("span")
-        && node.getAttributes().containsKey("jsfid")) {
+        if (node.getName() != null && node.getName().equals("span")
+            && node.getAttributes().containsKey("jsfid")) {
             
             builderRuleContext.setBuilder(builder);
             isFinal = true;

Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/shale-builder-config.xml
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/shale-builder-config.xml?rev=289140&r1=289139&r2=289140&view=diff
==============================================================================
--- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/shale-builder-config.xml (original)
+++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/shale-builder-config.xml Wed Sep 14 20:56:06 2005
@@ -30,8 +30,9 @@
     <command  className="org.apache.shale.clay.parser.builder.chain.OptionBuilderRule"/>
     <command  className="org.apache.shale.clay.parser.builder.chain.LabelBuilderRule"/>
     <command  className="org.apache.shale.clay.parser.builder.chain.AnchorBuilderRule"/>		
-    <command  className="org.apache.shale.clay.parser.builder.chain.SpanBuilderRule"/>	
-    <command  className="org.apache.shale.clay.parser.builder.chain.TextareaBuilderRule"/>		    	
+    <command  className="org.apache.shale.clay.parser.builder.chain.TextareaBuilderRule"/>	
+    	    	
+    <command  className="org.apache.shale.clay.parser.builder.chain.SpanBuilderRule"/>	
     <command  className="org.apache.shale.clay.parser.builder.chain.DefaultBuilderRule"/>
 		
   </chain>



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org