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/03/07 21:44:29 UTC

svn commit: r1298100 - in /myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html: HtmlButtonRendererBase.java HtmlLinkRendererBase.java HtmlTableRendererBase.java

Author: lu4242
Date: Wed Mar  7 20:44:29 2012
New Revision: 1298100

URL: http://svn.apache.org/viewvc?rev=1298100&view=rev
Log:
MYFACES-3473 [perf] Avoid unnecessary _ComponentChildrenList instances - improve HtmlRenderer.getChildren

Modified:
    myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java
    myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java
    myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTableRendererBase.java

Modified: myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java?rev=1298100&r1=1298099&r2=1298100&view=diff
==============================================================================
--- myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java (original)
+++ myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java Wed Mar  7 20:44:29 2012
@@ -20,6 +20,7 @@ package org.apache.myfaces.shared.render
 
 import java.io.IOException;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
@@ -140,8 +141,17 @@ public class HtmlButtonRendererBase
         // we should write the form submit script
         // (define oamSetHiddenInput, oamClearHiddenInput, oamSubmitForm)
         // because oamSetHiddenInput is called on onclick function
+        List<UIComponent> childrenList = null;
+        if (getChildCount(uiComponent) > 0)
+        {
+            childrenList = getChildren(uiComponent);
+        }
+        else
+        {
+           childrenList = Collections.emptyList();
+        }
         List<UIParameter> validParams = HtmlRendererUtils.getValidUIParameterChildren(
-                facesContext, getChildren(uiComponent), false, false);
+                facesContext, childrenList, false, false);
         
         boolean javascriptAllowed = JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext());
         

Modified: myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java?rev=1298100&r1=1298099&r2=1298100&view=diff
==============================================================================
--- myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java (original)
+++ myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java Wed Mar  7 20:44:29 2012
@@ -22,6 +22,7 @@ import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.RandomAccess;
@@ -659,8 +660,17 @@ public abstract class HtmlLinkRendererBa
         StringBuilder params = new StringBuilder();
         params.append("[");
         
+        List<UIComponent> childrenList = null;
+        if (getChildCount(component) > 0)
+        {
+            childrenList = getChildren(component);
+        }
+        else
+        {
+           childrenList = Collections.emptyList();
+        }
         List<UIParameter> validParams = HtmlRendererUtils.getValidUIParameterChildren(
-                FacesContext.getCurrentInstance(), getChildren(component), false, false);
+                context, childrenList, false, false);
         for (int j = 0, size = validParams.size(); j < size; j++) 
         {
             UIParameter param = validParams.get(j);
@@ -808,9 +818,17 @@ public abstract class HtmlLinkRendererBa
     {
         boolean strictXhtmlLinks
                 = MyfacesConfig.getCurrentInstance(facesContext.getExternalContext()).isStrictXhtmlLinks();
-        
+        List<UIComponent> childrenList = null;
+        if (getChildCount(linkComponent) > 0)
+        {
+            childrenList = getChildren(linkComponent);
+        }
+        else
+        {
+           childrenList = Collections.emptyList();
+        }
         List<UIParameter> validParams = HtmlRendererUtils.getValidUIParameterChildren(
-                facesContext, getChildren(linkComponent), false, false);
+                facesContext, childrenList, false, false);
         
         for (int i = 0, size = validParams.size(); i < size; i++)
         {

Modified: myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTableRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTableRendererBase.java?rev=1298100&r1=1298099&r2=1298100&view=diff
==============================================================================
--- myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTableRendererBase.java (original)
+++ myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTableRendererBase.java Wed Mar  7 20:44:29 2012
@@ -470,9 +470,13 @@ public class HtmlTableRendererBase exten
                     rowStartRendered = true;
                 }
 
-                List children = getChildren(component);
+                List children = null;
                 for (int j = 0, size = getChildCount(component); j < size; j++)
                 {
+                    if (children == null)
+                    {
+                        children = getChildren(component);
+                    }
                     UIComponent child = (UIComponent) children.get(j);
                     if (child.isRendered())
                     {