You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ta...@apache.org on 2018/12/05 17:22:16 UTC

[myfaces] 02/02: cosmetics + minor optimizations

This is an automated email from the ASF dual-hosted git repository.

tandraschko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces.git

commit 00e587b39f3ed3488e70797f12435d675c45023e
Author: Thomas Andraschko <ta...@apache.org>
AuthorDate: Wed Dec 5 18:22:08 2018 +0100

    cosmetics + minor optimizations
---
 .../application/DefaultViewHandlerSupport.java     |  3 --
 .../context/servlet/PartialViewContextImpl.java    | 33 ++++++++----
 .../renderkit/html/HtmlAjaxBehaviorRenderer.java   | 29 ----------
 .../html/base/HtmlButtonRendererBase.java          | 61 ++++++++--------------
 .../util/IllegalXmlCharacterFilterWriter.java      | 20 ++++---
 .../facelets/tag/jsf/core/VerbatimHandler.java     |  2 +
 6 files changed, 55 insertions(+), 93 deletions(-)

diff --git a/impl/src/main/java/org/apache/myfaces/application/DefaultViewHandlerSupport.java b/impl/src/main/java/org/apache/myfaces/application/DefaultViewHandlerSupport.java
index 80f5c5c..99af6c2 100644
--- a/impl/src/main/java/org/apache/myfaces/application/DefaultViewHandlerSupport.java
+++ b/impl/src/main/java/org/apache/myfaces/application/DefaultViewHandlerSupport.java
@@ -197,7 +197,6 @@ public class DefaultViewHandlerSupport implements ViewHandlerSupport
         FacesServletMapping mapping = getFacesServletMapping(context);
         ExternalContext externalContext = context.getExternalContext();
         String contextPath = externalContext.getRequestContextPath();
-        //StringBuilder builder = new StringBuilder(contextPath);
         StringBuilder builder = SharedStringBuilder.get(context, VIEW_HANDLER_SUPPORT_SB);
         // If the context path is root, it is not necessary to append it, otherwise
         // and extra '/' will be set.
@@ -468,7 +467,6 @@ public class DefaultViewHandlerSupport implements ViewHandlerSupport
         //Try to locate any resource that match with the expected id
         for (String defaultSuffix : jspDefaultSuffixes)
         {
-            //StringBuilder builder = new StringBuilder(requestViewId);
             builder.setLength(0);
             builder.append(requestViewId);
            
@@ -532,7 +530,6 @@ public class DefaultViewHandlerSupport implements ViewHandlerSupport
         }
         if (faceletsDefaultSuffix != null)
         {
-            //StringBuilder builder = new StringBuilder(requestViewId);
             builder.setLength(0);
             builder.append(requestViewId);
             
diff --git a/impl/src/main/java/org/apache/myfaces/context/servlet/PartialViewContextImpl.java b/impl/src/main/java/org/apache/myfaces/context/servlet/PartialViewContextImpl.java
index 6662731..e51006b 100644
--- a/impl/src/main/java/org/apache/myfaces/context/servlet/PartialViewContextImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/context/servlet/PartialViewContextImpl.java
@@ -282,20 +282,33 @@ public class PartialViewContextImpl extends PartialViewContext
 
     private String _replaceTabOrEnterCharactersWithSpaces(String mode)
     {
-        StringBuilder builder = new StringBuilder(mode.length());
-        for (int i = 0; i < mode.length(); i++)
+        if (mode == null)
         {
-            if (mode.charAt(i) == '\t' ||
-                    mode.charAt(i) == '\n')
-            {
-                builder.append(' ');
-            }
-            else
+            return null;
+        }
+        
+        char[] escaped = null;
+        
+        int modeLength = mode.length();
+        for (int i = 0; i < modeLength; i++)
+        {
+            char c = mode.charAt(i);
+            if (c == '\t' || c == '\n')
             {
-                builder.append(mode.charAt(i));
+                if (escaped == null)
+                {
+                    escaped = mode.toCharArray();
+                }
+                escaped[i] = ' ';
             }
         }
-        return builder.toString();
+
+        if (escaped != null)
+        {
+            return String.valueOf(escaped);
+        }
+        
+        return mode;
     }
 
     @Override
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlAjaxBehaviorRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlAjaxBehaviorRenderer.java
index 21923b2..fa71565 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlAjaxBehaviorRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlAjaxBehaviorRenderer.java
@@ -476,16 +476,6 @@ public class HtmlAjaxBehaviorRenderer extends ClientBehaviorRenderer
         strVal = strVal.trim();
         if (!EMPTY.equals(strVal))
         {
-            /*
-            if (!strVal.startsWith(IDENTIFYER_MARKER))
-            {
-                String componentId = getComponentId(context, strVal);
-                retVal.append(componentId);
-            }
-            else
-            {
-                retVal.append(strVal);
-            }*/
             SearchExpressionHandler handler = context.getFacesContext().getApplication().getSearchExpressionHandler();
             String clientId = handler.resolveClientId(searchExpressionContext, strVal);
             retVal.append(clientId);
@@ -496,25 +486,6 @@ public class HtmlAjaxBehaviorRenderer extends ClientBehaviorRenderer
         }
     }
 
-    /*
-    private String getComponentId(ClientBehaviorContext context, String id)
-    {
-
-        UIComponent contextComponent = context.getComponent();
-        UIComponent target = contextComponent.findComponent(id);
-        if (target == null)
-        {
-            target = contextComponent.findComponent(
-                context.getFacesContext().getNamingContainerSeparatorChar() + id);
-        }
-        if (target != null)
-        {
-            return target.getClientId(context.getFacesContext());
-        }
-        throw new FacesException("Component with id:" + id + " not found");
-    }
-    */
-
     private void assertBehavior(ClientBehavior behavior)
     {
         if (!(behavior instanceof AjaxBehavior))
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlButtonRendererBase.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlButtonRendererBase.java
index 9c80bdb..b2d89eb 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlButtonRendererBase.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlButtonRendererBase.java
@@ -46,10 +46,18 @@ import org.apache.myfaces.renderkit.html.util.JavascriptUtils;
 import org.apache.myfaces.renderkit.html.util.ResourceUtils;
 import org.apache.myfaces.renderkit.html.util.HTML;
 import org.apache.myfaces.util.ComponentUtils;
+import org.apache.myfaces.util.SharedStringBuilder;
 
 public class HtmlButtonRendererBase
     extends HtmlRenderer
 {
+    private static final String SB_BUILD_BEHAVIORIZED_ONCLICK = HtmlButtonRendererBase.class.getName()
+            + "#buildBehaviorizedOnClick";
+    private static final String SB_BUILD_ONCLICK = HtmlButtonRendererBase.class.getName()
+            + "#buildOnClick";
+    private static final String SB_ADD_CHILD_PARAMETERS = HtmlButtonRendererBase.class.getName() +
+            "#addChildParameters";
+    
     private static final String IMAGE_BUTTON_SUFFIX_X = ".x";
     private static final String IMAGE_BUTTON_SUFFIX_Y = ".y";
 
@@ -303,19 +311,19 @@ public class HtmlButtonRendererBase
                                               UIComponent form, List<UIParameter> validParams)
         throws IOException
     {
-        //we can omit autoscroll here for now maybe we should check if it is an ajax 
-        //behavior and omit it only in this case
-        StringBuilder userOnClick = new StringBuilder();
+        StringBuilder sb = SharedStringBuilder.get(facesContext, SB_BUILD_BEHAVIORIZED_ONCLICK);
+        
         //user onclick part 
         String commandOnClick = (String) uiComponent.getAttributes().get(HTML.ONCLICK_ATTR);
-
         if (commandOnClick != null)
         {
-            userOnClick.append(commandOnClick);
-            userOnClick.append(';');
+            sb.append(commandOnClick);
+            sb.append(';');
         }
+        String userOnClick = sb.toString();
 
-        StringBuilder rendererOnClick = new StringBuilder();
+        // reset SB and reuse
+        sb.setLength(0);
 
         if (form != null) 
         {
@@ -335,7 +343,7 @@ public class HtmlButtonRendererBase
                 if (JavascriptUtils.isRenderClearJavascriptOnButton(facesContext.getExternalContext()))
                 {
                     //call the script to clear the form (clearFormHiddenParams_<formName>) method
-                    HtmlRendererUtils.appendClearHiddenCommandFormParamsFunctionCall(rendererOnClick,
+                    HtmlRendererUtils.appendClearHiddenCommandFormParamsFunctionCall(sb,
                             form.getClientId(facesContext));
                 }
             //}
@@ -348,40 +356,13 @@ public class HtmlButtonRendererBase
         
         return HtmlRendererUtils.buildBehaviorChain(facesContext, uiComponent,
                 ClientBehaviorEvents.CLICK, paramList, ClientBehaviorEvents.ACTION, paramList, behaviors,
-                userOnClick.toString() , rendererOnClick.toString());
+                userOnClick , sb.toString());
     }
-    
-    protected String buildServerOnclick(FacesContext facesContext, UIComponent component, 
-            String clientId, UIComponent form, List<UIParameter> validParams) throws IOException
-    {
-        StringBuilder onClick = new StringBuilder();
-
-        StringBuilder params = addChildParameters(facesContext, form, validParams);
-
-        String target = getTarget(component);
 
-        onClick.append("return ").
-            append(HtmlRendererUtils.SUBMIT_FORM_FN_NAME_JSF2).append("('").
-            append(form.getClientId(facesContext)).append("','").
-            append(component.getClientId(facesContext)).append('\'');
-
-        if (params.length() > 2 || target != null)
-        {
-            onClick.append(',').
-                append(target == null ? "null" : ('\'' + target + '\'')).append(',').
-                append(params);
-        }
-        onClick.append(");");
-
-        
-        return onClick.toString();
-    }
-    
-    private StringBuilder addChildParameters(FacesContext context, 
-            UIComponent nestingForm, List<UIParameter> validParams)
+    private StringBuilder addChildParameters(FacesContext context, List<UIParameter> validParams)
     {
         //add child parameters
-        StringBuilder params = new StringBuilder();
+        StringBuilder params = SharedStringBuilder.get(context, SB_ADD_CHILD_PARAMETERS);
         params.append('[');
         
         for (int i = 0, size = validParams.size(); i < size; i++)
@@ -463,7 +444,7 @@ public class HtmlButtonRendererBase
                                         ResponseWriter writer, List<UIParameter> validParams)
         throws IOException
     {
-        StringBuilder onClick = new StringBuilder();
+        StringBuilder onClick = SharedStringBuilder.get(facesContext, SB_BUILD_ONCLICK);
         String commandOnClick = (String) uiComponent.getAttributes().get(HTML.ONCLICK_ATTR);
 
         if (commandOnClick != null)
@@ -480,7 +461,7 @@ public class HtmlButtonRendererBase
         {
             if (validParams != null && !validParams.isEmpty() )
             {
-                StringBuilder params = addChildParameters(facesContext, form, validParams);
+                StringBuilder params = addChildParameters(facesContext, validParams);
 
                 String target = getTarget(uiComponent);
 
diff --git a/impl/src/main/java/org/apache/myfaces/util/IllegalXmlCharacterFilterWriter.java b/impl/src/main/java/org/apache/myfaces/util/IllegalXmlCharacterFilterWriter.java
index 1fbedbe..2821200 100644
--- a/impl/src/main/java/org/apache/myfaces/util/IllegalXmlCharacterFilterWriter.java
+++ b/impl/src/main/java/org/apache/myfaces/util/IllegalXmlCharacterFilterWriter.java
@@ -31,7 +31,6 @@ import java.io.Writer;
  */
 public class IllegalXmlCharacterFilterWriter extends FilterWriter
 {
-    private static final char[] EMPTY_CHAR_ARRAY = new char[0];
     private static final char BLANK_CHAR = ' ';
     
     public IllegalXmlCharacterFilterWriter(Writer out)
@@ -70,26 +69,25 @@ public class IllegalXmlCharacterFilterWriter extends FilterWriter
         {
             return null;
         }
-        
-        boolean containsInvalidChar = false;
-        char[] encodedCharArray = EMPTY_CHAR_ARRAY;
 
-        for (int i = off; i < off + len; i++)
+        char[] encoded = null;
+        
+        int to = off + len;
+        for (int i = off; i < to; i++)
         {
             if (isInvalidChar(str.charAt(i)))
             {
-                if (!containsInvalidChar)
+                if (encoded == null)
                 {
-                    containsInvalidChar = true;
-                    encodedCharArray = str.toCharArray();
+                    encoded = str.toCharArray();
                 }
-                encodedCharArray[i] = BLANK_CHAR;
+                encoded[i] = BLANK_CHAR;
             }
         }
 
-        if (containsInvalidChar)
+        if (encoded != null)
         {
-            return String.valueOf(encodedCharArray);
+            return String.valueOf(encoded);
         }
 
         return str;
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/VerbatimHandler.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/VerbatimHandler.java
index bf30813..617b3e9 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/VerbatimHandler.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/VerbatimHandler.java
@@ -44,6 +44,7 @@ public final class VerbatimHandler extends ComponentHandler
         super(config);
     }
 
+    @Override
     public void onComponentCreated(FaceletContext ctx, UIComponent c, UIComponent parent)
     {
         StringBuilder content = new StringBuilder();
@@ -57,6 +58,7 @@ public final class VerbatimHandler extends ComponentHandler
         c.setTransient(true);
     }
 
+    @Override
     public void applyNextHandler(FaceletContext ctx, UIComponent c)
     {
     }