You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by we...@apache.org on 2022/12/21 13:14:19 UTC

[myfaces] branch 2.3-next updated: https://issues.apache.org/jira/browse/MYFACES-4040: merging in smaller code improvements from 3.0

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

werpu pushed a commit to branch 2.3-next
in repository https://gitbox.apache.org/repos/asf/myfaces.git


The following commit(s) were added to refs/heads/2.3-next by this push:
     new 73dac0478 https://issues.apache.org/jira/browse/MYFACES-4040: merging in smaller code improvements from 3.0
     new 55b3201be Merge pull request #453 from werpu/2.3-next
73dac0478 is described below

commit 73dac0478dd70854d85da5c03891a58b00e823ba
Author: Werner Punz <we...@gmail.com>
AuthorDate: Wed Dec 21 13:44:19 2022 +0100

    https://issues.apache.org/jira/browse/MYFACES-4040: merging in smaller code improvements from 3.0
---
 .../renderkit/html/util/AjaxScriptBuilder.java     | 100 +++++++++++++--------
 1 file changed, 64 insertions(+), 36 deletions(-)

diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/util/AjaxScriptBuilder.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/util/AjaxScriptBuilder.java
index 6f61701c0..e20a71540 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/util/AjaxScriptBuilder.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/util/AjaxScriptBuilder.java
@@ -29,11 +29,39 @@ import javax.faces.component.search.SearchExpressionContext;
 import javax.faces.component.search.SearchExpressionHandler;
 import javax.faces.context.FacesContext;
 import org.apache.myfaces.component.search.MyFacesSearchExpressionHints;
+import org.apache.myfaces.util.SharedStringBuilder;
 import org.apache.myfaces.util.lang.StringUtils;
 
 // CHECKSTYLE:OFF
 public class AjaxScriptBuilder
-{    
+{
+
+    private static final String AJAX_PARAM_SB = "oam.renderkit.AJAX_PARAM_SB";
+
+    private static final String QUOTE = "'";
+    private static final String BLANK = " ";
+
+    private static final String AJAX_KEY_ONERROR = "onerror";
+    private static final String AJAX_KEY_ONEVENT = "onevent";
+    private static final String AJAX_KEY_DELAY = "delay";
+    private static final String AJAX_KEY_RESETVALUES = "resetValues";
+
+    private static final String AJAX_VAL_THIS = "this";
+    private static final String AJAX_VAL_EVENT = "event";
+
+    private static final String COLON = ":";
+    private static final String COMMA = ",";
+
+    private static final String L_PAREN = "(";
+    private static final String R_PAREN = ")";
+
+    private static final String L_C_BRACE = "{";
+    private static final String R_C_BRACE = "}";
+    public static final String AJAX_KEY_PARAMS = "params";
+    public static final String AJAX_VAL_NULL = "null";
+    public static final String MYFACES_AB = "myfaces.ab";
+
+
     public static void build(FacesContext context,
             StringBuilder sb,
             UIComponent component,
@@ -77,13 +105,13 @@ public class AjaxScriptBuilder
         String execute = null;
         if (executeList != null && !executeList.isEmpty())
         {
-            execute = String.join(" ", executeList);
+            execute = String.join(BLANK, executeList);
         }
             
         String render = null;
         if (renderList != null && !renderList.isEmpty())
         {
-            render = String.join(" ", renderList);
+            render = String.join(BLANK, renderList);
         }
 
         build(context,
@@ -120,17 +148,17 @@ public class AjaxScriptBuilder
                 ? (HtmlCommandScript) component
                 : null;
    
-        sb.append("myfaces.ab(");
+        sb.append(MYFACES_AB +L_PAREN);
 
         if (sourceId == null)
         {
-            sb.append("this");
+            sb.append(AJAX_VAL_THIS);
         }
         else
         {
-            sb.append('\'');
+            sb.append(QUOTE);
             sb.append(sourceId);
-            sb.append('\'');
+            sb.append(QUOTE);
 
             if (!sourceId.trim().equals(component.getClientId(context)))
             {
@@ -153,13 +181,13 @@ public class AjaxScriptBuilder
                 }
             }
         }
-        sb.append(',');
+        sb.append(COMMA);
 
-        sb.append(commandScript == null ? "event" : "null");
-        sb.append(",'");
+        sb.append(commandScript == null ? AJAX_VAL_EVENT : AJAX_VAL_NULL);
+        sb.append(COMMA+QUOTE);
 
         sb.append(eventName);
-        sb.append("',");
+        sb.append(QUOTE+COMMA);
         
         SearchExpressionHandler seHandler = null;
         SearchExpressionContext seContext = null;
@@ -172,35 +200,35 @@ public class AjaxScriptBuilder
         }
 
         appendIds(sb, execute, seHandler, seContext);
-        sb.append(',');
+        sb.append(COMMA);
 
         appendIds(sb, render, seHandler, seContext);
         
         if (onevent != null || onerror != null || delay != null || resetValues != null
                 || (params != null && !params.isEmpty()) || (uiParams != null && !uiParams.isEmpty()))
         {
-            sb.append(",{");
+            sb.append(COMMA+L_C_BRACE);
             if (onevent != null)
             {
-                appendProperty(sb, "onevent", onevent, false);
+                appendProperty(sb, AJAX_KEY_ONEVENT, onevent, false);
             }
             if (onerror != null)
             {
-                appendProperty(sb, "onerror", onerror, false);
+                appendProperty(sb, AJAX_KEY_ONERROR, onerror, false);
             }
             if (delay != null)
             {
-                appendProperty(sb, "delay", delay, true);
+                appendProperty(sb, AJAX_KEY_DELAY, delay, true);
             }
             if (resetValues != null)
             {
-                appendProperty(sb, "resetValues", resetValues, false);
+                appendProperty(sb, AJAX_KEY_RESETVALUES, resetValues, false);
             }
 
             if ((params != null && !params.isEmpty()) || (uiParams != null && !uiParams.isEmpty()))
             {
-                StringBuilder paramsBuilder = new StringBuilder();
-                paramsBuilder.append('{');
+                StringBuilder paramsBuilder = SharedStringBuilder.get(context, AJAX_PARAM_SB, 60);
+                paramsBuilder.append(L_C_BRACE);
                 if (params != null && !params.isEmpty())
                 {
                     if (params instanceof RandomAccess)
@@ -229,21 +257,21 @@ public class AjaxScriptBuilder
                         appendProperty(paramsBuilder, param.getName(), param.getValue(), true);
                     }
                 }
-                paramsBuilder.append('}');
-                sb.append("params: ");
+                paramsBuilder.append(R_C_BRACE);
+                sb.append(AJAX_KEY_PARAMS+COLON);
                 sb.append(paramsBuilder);
             }
 
-            sb.append('}');
+            sb.append(R_C_BRACE);
         }
 
-        sb.append(')');
+        sb.append(R_PAREN);
     }
     
     private static void appendIds(StringBuilder sb, String expressions,
             SearchExpressionHandler handler, SearchExpressionContext searchExpressionContext)
     {
-        sb.append('\'');
+        sb.append(QUOTE);
         
         if (StringUtils.isNotBlank(expressions))
         {
@@ -256,14 +284,14 @@ public class AjaxScriptBuilder
                 {
                     if (i > 0)
                     {
-                        sb.append(' ');
+                        sb.append(BLANK);
                     }
                     sb.append(clientIds.get(i));
                 }
             }
         }
         
-        sb.append('\'');
+        sb.append(QUOTE);
     }
 
 
@@ -278,30 +306,30 @@ public class AjaxScriptBuilder
         }
 
         char lastChar = builder.charAt(builder.length() - 1);
-        if (lastChar != ',' && lastChar != '{')
+        if (!COMMA.equals(String.valueOf(lastChar)) && !L_C_BRACE.equals(String.valueOf(lastChar)))
         {
-            builder.append(',');
+            builder.append(COMMA);
         }
 
-        builder.append('\'');
+        builder.append(QUOTE);
         builder.append(name);
-        builder.append('\'');
+        builder.append(QUOTE);
         
-        builder.append(':');
+        builder.append(COLON);
 
         if (value == null)
         {
-            builder.append("''");
+            builder.append(QUOTE+QUOTE);
         }
         else if (quoteValue)
         {
-            builder.append('\'');
-            builder.append(value.toString());
-            builder.append('\'');
+            builder.append(QUOTE);
+            builder.append(value);
+            builder.append(QUOTE);
         }
         else
         {
-            builder.append(value.toString());
+            builder.append(value);
         }
     }
 }