You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2012/04/17 23:21:10 UTC

svn commit: r1327287 - in /myfaces/tomahawk/trunk/core20/src/main: java/org/apache/myfaces/renderkit/html/ext/ resources/META-INF/

Author: lu4242
Date: Tue Apr 17 21:21:09 2012
New Revision: 1327287

URL: http://svn.apache.org/viewvc?rev=1327287&view=rev
Log:
TOMAHAWK-1622 [perf] use improvement done in MyFaces Core renderers

Modified:
    myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlGroupRenderer.java
    myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlListboxRenderer.java
    myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlMenuRenderer.java
    myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlTableRenderer.java
    myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlTextRenderer.java
    myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlTextareaRenderer.java
    myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/componentClass20.vm

Modified: myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlGroupRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlGroupRenderer.java?rev=1327287&r1=1327286&r2=1327287&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlGroupRenderer.java (original)
+++ myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlGroupRenderer.java Tue Apr 17 21:21:09 2012
@@ -32,6 +32,8 @@ import javax.faces.context.ResponseWrite
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
 import org.apache.myfaces.component.html.ext.HtmlPanelGroup;
 import org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils;
+import org.apache.myfaces.shared_tomahawk.renderkit.html.CommonEventUtils;
+import org.apache.myfaces.shared_tomahawk.renderkit.html.CommonPropertyUtils;
 import org.apache.myfaces.shared_tomahawk.renderkit.html.HTML;
 import org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlGroupRendererBase;
 import org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRendererUtils;
@@ -52,6 +54,18 @@ public class HtmlGroupRenderer
 {
 
     @Override
+    protected boolean isCommonPropertiesOptimizationEnabled(FacesContext facesContext)
+    {
+        return true;
+    }
+
+    @Override
+    protected boolean isCommonEventsOptimizationEnabled(FacesContext facesContext)
+    {
+        return true;
+    }
+
+    @Override
     public void decode(FacesContext context, UIComponent component)
     {
         super.decode(context, component);
@@ -80,8 +94,29 @@ public class HtmlGroupRenderer
             span = true;
             writer.startElement(element, component);
             writer.writeAttribute(HTML.ID_ATTR, component.getClientId(context),null);
-            HtmlRendererUtils.renderHTMLAttributes(writer, component, HTML.UNIVERSAL_ATTRIBUTES);
-            HtmlRendererUtils.renderBehaviorizedEventHandlers(context, writer, component, behaviors);
+            if (isCommonPropertiesOptimizationEnabled(context))
+            {
+                long commonPropertiesMarked = CommonPropertyUtils.getCommonPropertiesMarked(component);
+                
+                CommonPropertyUtils.renderUniversalProperties(writer, commonPropertiesMarked, component);
+                CommonPropertyUtils.renderStyleProperties(writer, commonPropertiesMarked, component);
+
+                if (isCommonEventsOptimizationEnabled(context))
+                {
+                    Long commonEventsMarked = CommonEventUtils.getCommonEventsMarked(component);
+                    CommonEventUtils.renderBehaviorizedEventHandlers(context, writer, 
+                            commonPropertiesMarked, commonEventsMarked, component, behaviors);
+                }
+                else
+                {
+                    HtmlRendererUtils.renderBehaviorizedEventHandlers(context, writer, component, behaviors);
+                }
+            }
+            else
+            {
+                HtmlRendererUtils.renderHTMLAttributes(writer, component, HTML.UNIVERSAL_ATTRIBUTES);
+                HtmlRendererUtils.renderBehaviorizedEventHandlers(context, writer, component, behaviors);
+            }
         }
         else
         {
@@ -94,14 +129,37 @@ public class HtmlGroupRenderer
 
                 HtmlRendererUtils.writeIdIfNecessary(writer, component, context);
 
-                HtmlRendererUtils.renderHTMLAttributes(writer, component, HTML.COMMON_PASSTROUGH_ATTRIBUTES);
+                if (isCommonPropertiesOptimizationEnabled(context))
+                {
+                    CommonPropertyUtils.renderCommonPassthroughProperties(writer, 
+                            CommonPropertyUtils.getCommonPropertiesMarked(component), component);
+                }
+                else
+                {
+                    HtmlRendererUtils.renderHTMLAttributes(writer, component, HTML.COMMON_PASSTROUGH_ATTRIBUTES);
+                }
             }
             else
             {
-                span=HtmlRendererUtils.renderHTMLAttributesWithOptionalStartElement(writer,
-                                                                                 component,
-                                                                                 element,
-                                                                                 HTML.COMMON_PASSTROUGH_ATTRIBUTES);
+                if (isCommonPropertiesOptimizationEnabled(context))
+                {
+                    long commonPropertiesMarked = CommonPropertyUtils.getCommonPropertiesMarked(component);
+                    if (commonPropertiesMarked > 0)
+                    {
+                        span = true;
+                        writer.startElement(element, component);
+                        HtmlRendererUtils.writeIdIfNecessary(writer, component, context);
+
+                        CommonPropertyUtils.renderCommonPassthroughProperties(writer, commonPropertiesMarked, component);
+                    }
+                }
+                else
+                {
+                    span=HtmlRendererUtils.renderHTMLAttributesWithOptionalStartElement(writer,
+                                                                                     component,
+                                                                                     element,
+                                                                                     HTML.COMMON_PASSTROUGH_ATTRIBUTES);
+                }
             }
         }
 

Modified: myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlListboxRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlListboxRenderer.java?rev=1327287&r1=1327286&r2=1327287&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlListboxRenderer.java (original)
+++ myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlListboxRenderer.java Tue Apr 17 21:21:09 2012
@@ -49,6 +49,18 @@ import org.apache.myfaces.shared_tomahaw
 public class HtmlListboxRenderer
         extends HtmlListboxRendererBase
 {
+    @Override
+    protected boolean isCommonPropertiesOptimizationEnabled(FacesContext facesContext)
+    {
+        return true;
+    }
+
+    @Override
+    protected boolean isCommonEventsOptimizationEnabled(FacesContext facesContext)
+    {
+        return true;
+    }
+    
     protected boolean isDisabled(FacesContext facesContext, UIComponent uiComponent)
     {
         if (!UserRoleUtils.isEnabledOnUserRole(uiComponent))

Modified: myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlMenuRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlMenuRenderer.java?rev=1327287&r1=1327286&r2=1327287&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlMenuRenderer.java (original)
+++ myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlMenuRenderer.java Tue Apr 17 21:21:09 2012
@@ -51,6 +51,19 @@ public class HtmlMenuRenderer
         extends HtmlMenuRendererBase
 {
     //private static final Log log = LogFactory.getLog(HtmlMenuRenderer.class);
+    
+    @Override
+    protected boolean isCommonPropertiesOptimizationEnabled(FacesContext facesContext)
+    {
+        return true;
+    }
+
+    @Override
+    protected boolean isCommonEventsOptimizationEnabled(FacesContext facesContext)
+    {
+        return true;
+    }
+    
     protected boolean isDisabled(FacesContext facesContext, UIComponent uiComponent)
     {
         if (!UserRoleUtils.isEnabledOnUserRole(uiComponent))

Modified: myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlTableRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlTableRenderer.java?rev=1327287&r1=1327286&r2=1327287&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlTableRenderer.java (original)
+++ myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlTableRenderer.java Tue Apr 17 21:21:09 2012
@@ -136,6 +136,17 @@ public class HtmlTableRenderer extends H
     private static final String[] COLUMN_ATTRIBUTES = (String [])
         (String[]) ArrayUtils.concat(HTML.COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_STYLE, new String[]{HTML.COLSPAN_ATTR});
 
+    @Override
+    protected boolean isCommonPropertiesOptimizationEnabled(FacesContext facesContext)
+    {
+        return true;
+    }
+
+    @Override
+    protected boolean isCommonEventsOptimizationEnabled(FacesContext facesContext)
+    {
+        return true;
+    }
 
     /**
      * @param component dataTable

Modified: myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlTextRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlTextRenderer.java?rev=1327287&r1=1327286&r2=1327287&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlTextRenderer.java (original)
+++ myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlTextRenderer.java Tue Apr 17 21:21:09 2012
@@ -39,6 +39,9 @@ import org.apache.myfaces.component.html
 import org.apache.myfaces.shared_tomahawk.component.EscapeCapable;
 import org.apache.myfaces.shared_tomahawk.renderkit.JSFAttr;
 import org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils;
+import org.apache.myfaces.shared_tomahawk.renderkit.html.CommonEventUtils;
+import org.apache.myfaces.shared_tomahawk.renderkit.html.CommonPropertyConstants;
+import org.apache.myfaces.shared_tomahawk.renderkit.html.CommonPropertyUtils;
 import org.apache.myfaces.shared_tomahawk.renderkit.html.HTML;
 import org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRendererUtils;
 import org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlTextRendererBase;
@@ -68,6 +71,18 @@ public class HtmlTextRenderer
     //private static final Log log = LogFactory.getLog(HtmlTextRenderer.class);
     private static final Logger log = Logger.getLogger(HtmlTextRenderer.class.getName());
     
+    @Override
+    protected boolean isCommonPropertiesOptimizationEnabled(FacesContext facesContext)
+    {
+        return true;
+    }
+
+    @Override
+    protected boolean isCommonEventsOptimizationEnabled(FacesContext facesContext)
+    {
+        return true;
+    }
+
     protected boolean isDisabled(FacesContext facesContext, UIComponent uiComponent)
     {
         if (!UserRoleUtils.isEnabledOnUserRole(uiComponent))
@@ -138,26 +153,74 @@ public class HtmlTextRenderer
                 span = true;
                 writer.startElement(HTML.SPAN_ELEM, component);
                 writer.writeAttribute(HTML.ID_ATTR, component.getClientId(facesContext),null);
-                HtmlRendererUtils.renderHTMLAttributes(writer, component, HTML.UNIVERSAL_ATTRIBUTES);
-                HtmlRendererUtils.renderBehaviorizedEventHandlers(facesContext, writer, component, behaviors);
+                if (isCommonPropertiesOptimizationEnabled(facesContext))
+                {
+                    long commonPropertiesMarked = CommonPropertyUtils.getCommonPropertiesMarked(component);
+                    
+                    CommonPropertyUtils.renderUniversalProperties(writer, commonPropertiesMarked, component);
+                    CommonPropertyUtils.renderStyleProperties(writer, commonPropertiesMarked, component);
+
+                    if (isCommonEventsOptimizationEnabled(facesContext))
+                    {
+                        Long commonEventsMarked = CommonEventUtils.getCommonEventsMarked(component);
+                        CommonEventUtils.renderBehaviorizedEventHandlers(facesContext, writer, 
+                                commonPropertiesMarked, commonEventsMarked, component, behaviors);
+                    }
+                    else
+                    {
+                        HtmlRendererUtils.renderBehaviorizedEventHandlers(facesContext, writer, component, behaviors);
+                    }
+                }
+                else
+                {
+                    HtmlRendererUtils.renderHTMLAttributes(writer, component, HTML.UNIVERSAL_ATTRIBUTES);
+                    HtmlRendererUtils.renderBehaviorizedEventHandlers(facesContext, writer, component, behaviors);
+                }
             }
             else
             {
-                if(component.getId()!=null && !component.getId().startsWith(UIViewRoot.UNIQUE_ID_PREFIX))
+                if (isCommonPropertiesOptimizationEnabled(facesContext))
                 {
-                    span = true;
-    
-                    writer.startElement(HTML.SPAN_ELEM, component);
-    
-                    HtmlRendererUtils.writeIdIfNecessary(writer, component, facesContext);
-    
-                    HtmlRendererUtils.renderHTMLAttributes(writer, component, HTML.COMMON_PASSTROUGH_ATTRIBUTES);
-    
+                    long commonPropertiesMarked = CommonPropertyUtils.getCommonPropertiesMarked(component);
+                    if ( (commonPropertiesMarked & ~(CommonPropertyConstants.ESCAPE_PROP)) > 0)
+                    {
+                        span = true;
+                        writer.startElement(HTML.SPAN_ELEM, component);
+                        HtmlRendererUtils.writeIdIfNecessary(writer, component, facesContext);
+                    }
+                    else if (CommonPropertyUtils.isIdRenderingNecessary(component))
+                    {
+                        span = true;
+                        writer.startElement(HTML.SPAN_ELEM, component);
+                        writer.writeAttribute(HTML.ID_ATTR, component.getClientId(facesContext), null);
+                    }
+                    
+                    CommonPropertyUtils.renderUniversalProperties(writer, commonPropertiesMarked, component);
+                    CommonPropertyUtils.renderStyleProperties(writer, commonPropertiesMarked, component);
+                    
+                    if (isRenderOutputEventAttributes())
+                    {
+                        HtmlRendererUtils.renderHTMLAttributes(writer, component, HTML.EVENT_HANDLER_ATTRIBUTES);
+                    }
                 }
                 else
                 {
-                    span = HtmlRendererUtils.renderHTMLAttributesWithOptionalStartElement(writer,component,
-                            HTML.SPAN_ELEM,HTML.COMMON_PASSTROUGH_ATTRIBUTES);
+                    if(component.getId()!=null && !component.getId().startsWith(UIViewRoot.UNIQUE_ID_PREFIX))
+                    {
+                        span = true;
+        
+                        writer.startElement(HTML.SPAN_ELEM, component);
+        
+                        HtmlRendererUtils.writeIdIfNecessary(writer, component, facesContext);
+        
+                        HtmlRendererUtils.renderHTMLAttributes(writer, component, HTML.COMMON_PASSTROUGH_ATTRIBUTES);
+        
+                    }
+                    else
+                    {
+                        span = HtmlRendererUtils.renderHTMLAttributesWithOptionalStartElement(writer,component,
+                                HTML.SPAN_ELEM,HTML.COMMON_PASSTROUGH_ATTRIBUTES);
+                    }
                 }
             }
 

Modified: myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlTextareaRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlTextareaRenderer.java?rev=1327287&r1=1327286&r2=1327287&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlTextareaRenderer.java (original)
+++ myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlTextareaRenderer.java Tue Apr 17 21:21:09 2012
@@ -47,6 +47,18 @@ import org.apache.myfaces.shared_tomahaw
 public class HtmlTextareaRenderer
         extends HtmlTextareaRendererBase
 {
+    @Override
+    protected boolean isCommonPropertiesOptimizationEnabled(FacesContext facesContext)
+    {
+        return true;
+    }
+
+    @Override
+    protected boolean isCommonEventsOptimizationEnabled(FacesContext facesContext)
+    {
+        return true;
+    }
+
     protected boolean isDisabled(FacesContext facesContext, UIComponent uiComponent)
     {
         if (!UserRoleUtils.isEnabledOnUserRole(uiComponent))

Modified: myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/componentClass20.vm
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/componentClass20.vm?rev=1327287&r1=1327286&r2=1327287&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/componentClass20.vm (original)
+++ myfaces/tomahawk/trunk/core20/src/main/resources/META-INF/componentClass20.vm Tue Apr 17 21:21:09 2012
@@ -124,6 +124,13 @@ $innersource
         return CLIENT_EVENTS_LIST;
     }
 #end
+
+    @Override
+    public void addClientBehavior(String eventName, javax.faces.component.behavior.ClientBehavior behavior)
+    {
+        super.addClientBehavior(eventName, behavior);
+        org.apache.myfaces.shared_tomahawk.renderkit.html.CommonEventConstants.markEvent(this, eventName);
+    }
 #end
 #if ($component.defaultEventName)
 #if ($component.isOverrideDefaultEventName())
@@ -136,9 +143,51 @@ $innersource
 #end
 #end
 
-#set ($propertyList = ${component.propertyComponentList})
+##set ($propertyList = ${component.propertyComponentList})
+#set ($propertyList = ${component.propertyList})
     
 #foreach( $property in $propertyList )
+#if ((!$property.isInherited() && $property.isGenerated()) ||
+     $property.name == "style" ||
+     $property.name == "styleClass" ||
+     $property.name == "dir" ||
+     $property.name == "lang" ||
+     $property.name == "title" ||
+     $property.name == "escape" ||
+     $property.name == "disabled" ||
+     $property.name == "enabled" ||
+     $property.name == "readonly" ||
+     $property.name == "accesskey" ||
+     $property.name == "alt" ||
+     $property.name == "onchange" ||
+     $property.name == "onselect" ||
+     $property.name == "onclick" ||
+     $property.name == "ondblclick" ||
+     $property.name == "onmousedown" ||
+     $property.name == "onmouseup" ||
+     $property.name == "onmouseover" ||
+     $property.name == "onmousemove" ||
+     $property.name == "onmouseout" ||
+     $property.name == "onkeypress" ||
+     $property.name == "onkeydown" ||
+     $property.name == "onkeyup" ||
+     $property.name == "onfocus" ||
+     $property.name == "onblur" ||
+     $property.name == "label" ||
+     $property.name == "charset" ||
+     $property.name == "coords" ||
+     $property.name == "hreflang" ||
+     $property.name == "rel" ||
+     $property.name == "rev" ||
+     $property.name == "shape" ||
+     $property.name == "target" ||
+     $property.name == "type" ||
+     $property.name == "tabindex" ||
+     $property.name == "align" ||
+     $property.name == "checked" ||
+     $property.name == "maxlength" ||
+     $property.name == "size"
+)
 #set ($field = $property.fieldName)
 #set ($type = $utils.getClassFromFullClass($property.className))
 #if($utils.getDefaultValueField($property)) 
@@ -303,15 +352,115 @@ $innersource
     public void $utils.getPrefixedPropertyName("set", $property.name)($type $utils.getVariableFromName($property.name))
     {
         getStateHelper().put(PropertyKeys.$field, $utils.getVariableFromName($property.name) ); 
+#if ($property.name == "style" ||
+     $property.name == "styleClass" ||
+     $property.name == "dir" ||
+     $property.name == "lang" ||
+     $property.name == "title" ||
+     $property.name == "escape" ||
+     $property.name == "disabled" ||
+     $property.name == "enabled" ||
+     $property.name == "readonly" ||
+     $property.name == "accesskey" ||
+     $property.name == "alt" ||
+     $property.name == "onchange" ||
+     $property.name == "onselect" ||
+     $property.name == "onclick" ||
+     $property.name == "ondblclick" ||
+     $property.name == "onmousedown" ||
+     $property.name == "onmouseup" ||
+     $property.name == "onmouseover" ||
+     $property.name == "onmousemove" ||
+     $property.name == "onmouseout" ||
+     $property.name == "onkeypress" ||
+     $property.name == "onkeydown" ||
+     $property.name == "onkeyup" ||
+     $property.name == "onfocus" ||
+     $property.name == "onblur" ||
+     $property.name == "label" ||
+     $property.name == "charset" ||
+     $property.name == "coords" ||
+     $property.name == "hreflang" ||
+     $property.name == "rel" ||
+     $property.name == "rev" ||
+     $property.name == "shape" ||
+     $property.name == "target" ||
+     $property.name == "type" ||
+     $property.name == "tabindex" ||
+     $property.name == "align" ||
+     $property.name == "checked" ||
+     $property.name == "maxlength" ||
+     $property.name == "size"
+      )
+#set($overrideSetValueExpression = true)
+        org.apache.myfaces.shared_tomahawk.renderkit.html.CommonPropertyConstants.markProperty(this,
+            org.apache.myfaces.shared_tomahawk.renderkit.html.CommonPropertyConstants.${property.name.toUpperCase()}_PROP);
+#end
     }    
 #end
 #end
+#end
+
+#if ($overrideSetValueExpression)
+    public void setValueBinding(String name, javax.faces.el.ValueBinding binding)
+    {
+        super.setValueBinding(name, binding);
+        org.apache.myfaces.shared_tomahawk.renderkit.html.CommonPropertyConstants.markProperty(this, name);
+    }
+
+    public void setValueExpression(String name, ValueExpression expression)
+    {
+        super.setValueExpression(name, expression);
+        org.apache.myfaces.shared_tomahawk.renderkit.html.CommonPropertyConstants.markProperty(this, name);
+    }
 
+#end
     protected enum PropertyKeys
     {
 #set ($comma = "")
 #set ($addc = "false")
 #foreach( $property in $propertyList )
+#if ((!$property.isInherited() && $property.isGenerated()) ||
+     $property.name == "style" ||
+     $property.name == "styleClass" ||
+     $property.name == "dir" ||
+     $property.name == "lang" ||
+     $property.name == "title" ||
+     $property.name == "escape" ||
+     $property.name == "disabled" ||
+     $property.name == "enabled" ||
+     $property.name == "readonly" ||
+     $property.name == "accesskey" ||
+     $property.name == "alt" ||
+     $property.name == "onchange" ||
+     $property.name == "onselect" ||
+     $property.name == "onclick" ||
+     $property.name == "ondblclick" ||
+     $property.name == "onmousedown" ||
+     $property.name == "onmouseup" ||
+     $property.name == "onmouseover" ||
+     $property.name == "onmousemove" ||
+     $property.name == "onmouseout" ||
+     $property.name == "onkeypress" ||
+     $property.name == "onkeydown" ||
+     $property.name == "onkeyup" ||
+     $property.name == "onfocus" ||
+     $property.name == "onblur" ||
+     $property.name == "label" ||
+     $property.name == "charset" ||
+     $property.name == "coords" ||
+     $property.name == "hreflang" ||
+     $property.name == "rel" ||
+     $property.name == "rev" ||
+     $property.name == "shape" ||
+     $property.name == "target" ||
+     $property.name == "type" ||
+     $property.name == "tabindex" ||
+     $property.name == "align" ||
+     $property.name == "checked" ||
+     $property.name == "maxlength" ||
+     $property.name == "size"
+)
 #if ($property.name == "for")
 #set ($addc = "true")
 ## To keep compatibility with RI, we should call it forVal
@@ -336,6 +485,7 @@ $innersource
 #end
 #set($comma = ",")
 #end
+#end
 #if ("true" == $addc)
         ;
         String c;
@@ -357,6 +507,7 @@ $innersource
 #end
     }
 
+#set ($propertyList = ${component.propertyComponentList})
 #set ($primitiveCount = 1) ## $propertyList.size() + 1 
 #foreach( $property in $propertyList )
 #if ($property.isPartialStateHolder())