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/15 15:49:32 UTC
[myfaces] branch master updated: refactored + better performance
for string blank check
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
The following commit(s) were added to refs/heads/master by this push:
new 6063599 refactored + better performance for string blank check
6063599 is described below
commit 60635991962f27a0c1059e223f6e4ce0e150137a
Author: Thomas Andraschko <ta...@apache.org>
AuthorDate: Sat Dec 15 16:49:25 2018 +0100
refactored + better performance for string blank check
---
.../myfaces/application/ApplicationImpl.java | 37 +++++-----
.../search/SearchExpressionHandlerImpl.java | 5 +-
.../config/DefaultFacesConfigurationMerger.java | 9 +--
.../config/annotation/AnnotationConfigurator.java | 13 ++--
.../servlet/ServletExternalContextImpl.java | 6 +-
.../org/apache/myfaces/flow/impl/FlowScopeMap.java | 12 ++++
.../renderkit/html/HtmlAjaxBehaviorRenderer.java | 80 +++++++++-------------
.../renderkit/html/HtmlCommandScriptRenderer.java | 13 ++--
.../renderkit/html/base/HtmlRendererUtils.java | 30 ++++----
.../java/org/apache/myfaces/util/LangUtils.java | 27 ++++++++
.../facelets/tag/composite/AttributeHandler.java | 3 +-
.../myfaces/webapp/AbstractFacesInitializer.java | 3 +-
12 files changed, 137 insertions(+), 101 deletions(-)
diff --git a/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java b/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java
index f72bd36..6d7439c 100755
--- a/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java
@@ -123,6 +123,7 @@ import org.apache.myfaces.lifecycle.LifecycleImpl;
import org.apache.myfaces.config.MyfacesConfig;
import org.apache.myfaces.util.Assert;
import org.apache.myfaces.util.ClassUtils;
+import org.apache.myfaces.util.LangUtils;
import org.apache.myfaces.view.facelets.FaceletCompositionContext;
import org.apache.myfaces.view.facelets.el.ELText;
@@ -1869,10 +1870,10 @@ public class ApplicationImpl extends Application
// Get the annotation instance from the class and obtain the values of the name, library, and
// target attributes.
String name = annotation.name();
- if (name != null && name.length() > 0)
+ if (LangUtils.isNotEmpty(name))
{
- name = ELText.parse(getExpressionFactory(),
- context.getELContext(), name).toString(context.getELContext());
+ name = ELText.parse(getExpressionFactory(),context.getELContext(), name)
+ .toString(context.getELContext());
}
// Obtain the renderer-type for the resource name by passing name to
@@ -1894,10 +1895,10 @@ public class ApplicationImpl extends Application
// If library is the empty string, let library be null.
String library = annotation.library();
- if (library != null && library.length() > 0)
+ if (LangUtils.isNotEmpty(library))
{
- library = ELText.parse(getExpressionFactory(),
- context.getELContext(), library).toString(context.getELContext());
+ library = ELText.parse(getExpressionFactory(), context.getELContext(), library)
+ .toString(context.getELContext());
// If library is non-null, store it under the key "library".
attributes.put("library", library);
}
@@ -1908,10 +1909,10 @@ public class ApplicationImpl extends Application
// If target is the empty string, let target be null.
String target = annotation.target();
- if (target != null && target.length() > 0)
+ if (LangUtils.isNotEmpty(target))
{
- target = ELText.parse(getExpressionFactory(),
- context.getELContext(), target).toString(context.getELContext());
+ target = ELText.parse(getExpressionFactory(),context.getELContext(), target)
+ .toString(context.getELContext());
// If target is non-null, store it under the key "target".
attributes.put("target", target);
context.getViewRoot().addComponentResource(context, output, target);
@@ -2309,10 +2310,10 @@ public class ApplicationImpl extends Application
// Get the annotation instance from the class and obtain the values of the name, library, and
// target attributes.
String name = annotation.name();
- if (name != null && name.length() > 0)
+ if (LangUtils.isNotEmpty(name))
{
- name = ELText.parse(getExpressionFactory(),
- context.getELContext(), name).toString(context.getELContext());
+ name = ELText.parse(getExpressionFactory(), context.getELContext(), name)
+ .toString(context.getELContext());
}
// Obtain the renderer-type for the resource name by passing name to
@@ -2335,10 +2336,10 @@ public class ApplicationImpl extends Application
// If library is the empty string, let library be null.
String library = annotation.library();
- if (library != null && library.length() > 0)
+ if (LangUtils.isNotEmpty(library))
{
- library = ELText.parse(getExpressionFactory(),
- context.getELContext(), library).toString(context.getELContext());
+ library = ELText.parse(getExpressionFactory(), context.getELContext(), library)
+ .toString(context.getELContext());
// If library is non-null, store it under the key "library".
if ("this".equals(library))
{
@@ -2361,10 +2362,10 @@ public class ApplicationImpl extends Application
// If target is the empty string, let target be null.
String target = annotation.target();
- if (target != null && target.length() > 0)
+ if (LangUtils.isNotEmpty(target))
{
- target = ELText.parse(getExpressionFactory(),
- context.getELContext(), target).toString(context.getELContext());
+ target = ELText.parse(getExpressionFactory(), context.getELContext(), target)
+ .toString(context.getELContext());
// If target is non-null, store it under the key "target".
attributes.put("target", target);
context.getViewRoot().addComponentResource(context, output, target);
diff --git a/impl/src/main/java/org/apache/myfaces/component/search/SearchExpressionHandlerImpl.java b/impl/src/main/java/org/apache/myfaces/component/search/SearchExpressionHandlerImpl.java
index aa65f8d..3822687 100644
--- a/impl/src/main/java/org/apache/myfaces/component/search/SearchExpressionHandlerImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/component/search/SearchExpressionHandlerImpl.java
@@ -35,6 +35,7 @@ import javax.faces.component.search.SearchKeywordContext;
import javax.faces.context.FacesContext;
import org.apache.myfaces.util.SharedStringBuilder;
import org.apache.myfaces.util.ComponentUtils;
+import org.apache.myfaces.util.LangUtils;
/**
*
@@ -597,7 +598,7 @@ public class SearchExpressionHandlerImpl extends SearchExpressionHandler
@Override
public boolean isPassthroughExpression(SearchExpressionContext searchExpressionContext, String topExpression)
{
- if (topExpression == null || topExpression.trim().isEmpty())
+ if (LangUtils.isBlank(topExpression))
{
return false;
}
@@ -655,7 +656,7 @@ public class SearchExpressionHandlerImpl extends SearchExpressionHandler
@Override
public boolean isValidExpression(SearchExpressionContext searchExpressionContext, String topExpression)
{
- if (topExpression == null || topExpression.trim().isEmpty())
+ if (LangUtils.isBlank(topExpression))
{
return true;
}
diff --git a/impl/src/main/java/org/apache/myfaces/config/DefaultFacesConfigurationMerger.java b/impl/src/main/java/org/apache/myfaces/config/DefaultFacesConfigurationMerger.java
index 23f8766..3f4cdf9 100644
--- a/impl/src/main/java/org/apache/myfaces/config/DefaultFacesConfigurationMerger.java
+++ b/impl/src/main/java/org/apache/myfaces/config/DefaultFacesConfigurationMerger.java
@@ -42,6 +42,7 @@ import java.util.LinkedList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
+import org.apache.myfaces.util.LangUtils;
/**
* Default impl of the FacesConfigurationMerger-SPI.
@@ -418,7 +419,7 @@ public class DefaultFacesConfigurationMerger extends FacesConfigurationMerger
if (slot instanceof FacesConfigNameSlot)
{
String name = ((FacesConfigNameSlot) slot).getName();
- if (name != null && !name.isEmpty())
+ if (LangUtils.isNotEmpty(name))
{
boolean founded = false;
for (int j = i+1; j < sortedList.size(); j++)
@@ -577,7 +578,7 @@ public class DefaultFacesConfigurationMerger extends FacesConfigurationMerger
if (slot instanceof FacesConfigNameSlot)
{
String name = ((FacesConfigNameSlot) slot).getName();
- if (name != null && !name.isEmpty())
+ if (LangUtils.isNotEmpty(name))
{
boolean founded = false;
for (int j = i-1; j >= 0; j--)
@@ -601,7 +602,7 @@ public class DefaultFacesConfigurationMerger extends FacesConfigurationMerger
if (slot instanceof FacesConfigNameSlot)
{
String name = ((FacesConfigNameSlot) slot).getName();
- if (name != null && !name.isEmpty())
+ if (LangUtils.isNotEmpty(name))
{
boolean founded = false;
for (int j = i+1; j < sortedList.size(); j++)
@@ -773,7 +774,7 @@ public class DefaultFacesConfigurationMerger extends FacesConfigurationMerger
for (FacesConfig resource : appConfigResources)
{
String name = resource.getName();
- if (name != null && !name.isEmpty())
+ if (LangUtils.isNotEmpty(name))
{
availableReferences.add(name);
}
diff --git a/impl/src/main/java/org/apache/myfaces/config/annotation/AnnotationConfigurator.java b/impl/src/main/java/org/apache/myfaces/config/annotation/AnnotationConfigurator.java
index ba38011..2fe80df 100644
--- a/impl/src/main/java/org/apache/myfaces/config/annotation/AnnotationConfigurator.java
+++ b/impl/src/main/java/org/apache/myfaces/config/annotation/AnnotationConfigurator.java
@@ -46,6 +46,7 @@ import org.apache.myfaces.config.impl.digester.elements.ConverterImpl;
import org.apache.myfaces.config.impl.digester.elements.FacesConfigImpl;
import org.apache.myfaces.spi.AnnotationProvider;
import org.apache.myfaces.spi.AnnotationProviderFactory;
+import org.apache.myfaces.util.LangUtils;
/**
* Configure all annotations that needs to be defined at startup.
@@ -110,7 +111,7 @@ public class AnnotationConfigurator
+ clazz.getName() + ')');
}
String value = comp.value();
- if (value == null || value.isEmpty())
+ if (LangUtils.isEmpty(value))
{
String simpleName = clazz.getSimpleName();
value = Character.toLowerCase(simpleName.charAt(0)) + simpleName.substring(1);
@@ -120,18 +121,14 @@ public class AnnotationConfigurator
if (comp.createTag())
{
String tagName = comp.tagName();
- if (tagName != null && tagName.length() > 0)
- {
- //Ok
- }
- else
+ if (LangUtils.isEmpty(tagName))
{
tagName = clazz.getSimpleName();
tagName = Character.toLowerCase(tagName.charAt(0)) + tagName.substring(1);
}
+
facesConfig.addComponentTagDeclaration(value,
- new ComponentTagDeclarationImpl(value,
- comp.namespace(), tagName));
+ new ComponentTagDeclarationImpl(value, comp.namespace(), tagName));
}
}
}
diff --git a/impl/src/main/java/org/apache/myfaces/context/servlet/ServletExternalContextImpl.java b/impl/src/main/java/org/apache/myfaces/context/servlet/ServletExternalContextImpl.java
index 7e47da3..296caf5 100755
--- a/impl/src/main/java/org/apache/myfaces/context/servlet/ServletExternalContextImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/context/servlet/ServletExternalContextImpl.java
@@ -60,6 +60,7 @@ import org.apache.myfaces.context.flash.FlashImpl;
import org.apache.myfaces.util.Assert;
import org.apache.myfaces.util.EnumerationIterator;
import org.apache.myfaces.util.ExternalSpecifications;
+import org.apache.myfaces.util.LangUtils;
/**
* Implements the external context for servlet request. JSF 1.2, 6.1.3
@@ -912,13 +913,14 @@ public final class ServletExternalContextImpl extends ServletExternalContextImpl
{
for (Map.Entry<String, List<String>> pair : parameters.entrySet())
{
- if (pair.getKey() != null && pair.getKey().trim().length() != 0)
+ String key = pair.getKey();
+ if (LangUtils.isNotBlank(key))
{
if (paramMap == null)
{
paramMap = new HashMap<String, List<String>>();
}
- paramMap.put(pair.getKey(), pair.getValue());
+ paramMap.put(key, pair.getValue());
}
}
}
diff --git a/impl/src/main/java/org/apache/myfaces/flow/impl/FlowScopeMap.java b/impl/src/main/java/org/apache/myfaces/flow/impl/FlowScopeMap.java
index f55daa6..99c0511 100644
--- a/impl/src/main/java/org/apache/myfaces/flow/impl/FlowScopeMap.java
+++ b/impl/src/main/java/org/apache/myfaces/flow/impl/FlowScopeMap.java
@@ -53,6 +53,7 @@ class FlowScopeMap implements Map<Object,Object>
return _delegate;
}
+ @Override
public int size()
{
Map<Object,Object> map = getWrapped(false);
@@ -63,6 +64,7 @@ class FlowScopeMap implements Map<Object,Object>
return map.size();
}
+ @Override
public boolean isEmpty()
{
Map<Object,Object> map = getWrapped(false);
@@ -73,6 +75,7 @@ class FlowScopeMap implements Map<Object,Object>
return map.isEmpty();
}
+ @Override
public boolean containsKey(Object key)
{
Map<Object,Object> map = getWrapped(false);
@@ -83,6 +86,7 @@ class FlowScopeMap implements Map<Object,Object>
return map.containsKey(key);
}
+ @Override
public boolean containsValue(Object value)
{
Map<Object,Object> map = getWrapped(false);
@@ -93,6 +97,7 @@ class FlowScopeMap implements Map<Object,Object>
return map.containsValue(value);
}
+ @Override
public Object get(Object key)
{
Map<Object,Object> map = getWrapped(false);
@@ -103,11 +108,13 @@ class FlowScopeMap implements Map<Object,Object>
return map.get(key);
}
+ @Override
public Object put(Object key, Object value)
{
return getWrapped(true).put(key, value);
}
+ @Override
public Object remove(Object key)
{
Map<Object,Object> map = getWrapped(false);
@@ -118,11 +125,13 @@ class FlowScopeMap implements Map<Object,Object>
return map.remove(key);
}
+ @Override
public void putAll(Map<? extends Object, ? extends Object> m)
{
getWrapped(true).putAll(m);
}
+ @Override
public void clear()
{
Map<Object,Object> map = getWrapped(false);
@@ -133,16 +142,19 @@ class FlowScopeMap implements Map<Object,Object>
map.clear();
}
+ @Override
public Set<Object> keySet()
{
return getWrapped(true).keySet();
}
+ @Override
public Collection<Object> values()
{
return getWrapped(true).values();
}
+ @Override
public Set<Entry<Object, Object>> entrySet()
{
return getWrapped(true).entrySet();
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 ae87a54..2a334ef 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
@@ -40,6 +40,7 @@ import javax.faces.context.FacesContext;
import javax.faces.event.AjaxBehaviorEvent;
import javax.faces.event.PhaseId;
import javax.faces.render.ClientBehaviorRenderer;
+import org.apache.myfaces.util.LangUtils;
import org.apache.myfaces.util.SharedStringBuilder;
/**
@@ -49,9 +50,6 @@ import org.apache.myfaces.util.SharedStringBuilder;
public class HtmlAjaxBehaviorRenderer extends ClientBehaviorRenderer
{
- 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_EXECUTE = "execute";
@@ -63,13 +61,7 @@ public class HtmlAjaxBehaviorRenderer extends ClientBehaviorRenderer
private static final String AJAX_VAL_EVENT = "event";
private static final String JS_AJAX_REQUEST = "jsf.ajax.request";
- private static final String COLON = ":";
- private static final String EMPTY = "";
- private static final String COMMA = ",";
-
private static final String ERR_NO_AJAX_BEHAVIOR = "The behavior must be an instance of AjaxBehavior";
- private static final String L_PAREN = "(";
- private static final String R_PAREN = ")";
private static final String AJAX_SB = "oam.renderkit.AJAX_SB";
private static final String AJAX_PARAM_SB = "oam.renderkit.AJAX_PARAM_SB";
@@ -155,12 +147,11 @@ public class HtmlAjaxBehaviorRenderer extends ClientBehaviorRenderer
String render = mapToString(context, paramBuffer, AJAX_KEY_RENDER, behavior.getRender());
String onError = behavior.getOnerror();
- if (onError != null && !onError.trim().equals(EMPTY))
+ if (LangUtils.isNotBlank(onError))
{
- //onError = AJAX_KEY_ONERROR + COLON + onError;
paramBuffer.setLength(0);
paramBuffer.append(AJAX_KEY_ONERROR);
- paramBuffer.append(COLON);
+ paramBuffer.append(':');
paramBuffer.append(onError);
onError = paramBuffer.toString();
}
@@ -168,12 +159,13 @@ public class HtmlAjaxBehaviorRenderer extends ClientBehaviorRenderer
{
onError = null;
}
+
String onEvent = behavior.getOnevent();
- if (onEvent != null && !onEvent.trim().equals(EMPTY))
+ if (LangUtils.isNotBlank(onEvent))
{
paramBuffer.setLength(0);
paramBuffer.append(AJAX_KEY_ONEVENT);
- paramBuffer.append(COLON);
+ paramBuffer.append(':');
paramBuffer.append(onEvent);
onEvent = paramBuffer.toString();
}
@@ -181,15 +173,13 @@ public class HtmlAjaxBehaviorRenderer extends ClientBehaviorRenderer
{
onEvent = null;
}
- /*
- * since version 2.2
- */
+
String delay = behavior.getDelay();
- if (delay != null && !delay.trim().equals(EMPTY))
+ if (LangUtils.isNotBlank(delay))
{
paramBuffer.setLength(0);
paramBuffer.append(AJAX_KEY_DELAY);
- paramBuffer.append(COLON);
+ paramBuffer.append(':');
if ("none".equals(delay))
{
paramBuffer.append('\'');
@@ -206,15 +196,13 @@ public class HtmlAjaxBehaviorRenderer extends ClientBehaviorRenderer
{
delay = null;
}
- /*
- * since version 2.2
- */
+
String resetValues = Boolean.toString(behavior.isResetValues());
if (resetValues.equals("true"))
{
paramBuffer.setLength(0);
paramBuffer.append(AJAX_KEY_RESETVALUES);
- paramBuffer.append(COLON);
+ paramBuffer.append(':');
paramBuffer.append(resetValues);
resetValues = paramBuffer.toString();
}
@@ -266,11 +254,11 @@ public class HtmlAjaxBehaviorRenderer extends ClientBehaviorRenderer
String event = context.getEventName();
retVal.append(JS_AJAX_REQUEST);
- retVal.append(L_PAREN);
+ retVal.append('(');
retVal.append(sourceId);
- retVal.append(COMMA);
+ retVal.append(',');
retVal.append(AJAX_VAL_EVENT);
- retVal.append(COMMA);
+ retVal.append(',');
Collection<ClientBehaviorContext.Parameter> params = context.getParameters();
int paramSize = (params != null) ? params.size() : 0;
@@ -332,15 +320,14 @@ public class HtmlAjaxBehaviorRenderer extends ClientBehaviorRenderer
}
}
- //parameterList.add(QUOTE + BEHAVIOR_EVENT + QUOTE + COLON + QUOTE + event + QUOTE);
paramBuffer.setLength(0);
- paramBuffer.append(QUOTE);
+ paramBuffer.append('\'');
paramBuffer.append(ClientBehaviorContext.BEHAVIOR_EVENT_PARAM_NAME);
- paramBuffer.append(QUOTE);
- paramBuffer.append(COLON);
- paramBuffer.append(QUOTE);
+ paramBuffer.append('\'');
+ paramBuffer.append(':');
+ paramBuffer.append('\'');
paramBuffer.append(event);
- paramBuffer.append(QUOTE);
+ paramBuffer.append('\'');
parameterList.add(paramBuffer.toString());
/**
@@ -350,7 +337,7 @@ public class HtmlAjaxBehaviorRenderer extends ClientBehaviorRenderer
*/
retVal.append(buildOptions(paramBuffer, parameterList));
- retVal.append(R_PAREN);
+ retVal.append(')');
return retVal;
}
@@ -363,13 +350,13 @@ public class HtmlAjaxBehaviorRenderer extends ClientBehaviorRenderer
//and the rest is up to the toString properly implemented
//ANS: Both name and value should be quoted
paramBuffer.setLength(0);
- paramBuffer.append(QUOTE);
+ paramBuffer.append('\'');
paramBuffer.append(param.getName());
- paramBuffer.append(QUOTE);
- paramBuffer.append(COLON);
- paramBuffer.append(QUOTE);
+ paramBuffer.append('\'');
+ paramBuffer.append(':');
+ paramBuffer.append('\'');
paramBuffer.append(param.getValue().toString());
- paramBuffer.append(QUOTE);
+ paramBuffer.append('\'');
parameterList.add(paramBuffer.toString());
}
@@ -385,11 +372,11 @@ public class HtmlAjaxBehaviorRenderer extends ClientBehaviorRenderer
for (int i = 0, size = options.size(); i < size; i++)
{
String option = options.get(i);
- if (option != null && !option.trim().equals(EMPTY))
+ if (LangUtils.isNotBlank(option))
{
if (!first)
{
- retVal.append(COMMA);
+ retVal.append(',');
}
else
{
@@ -417,8 +404,8 @@ public class HtmlAjaxBehaviorRenderer extends ClientBehaviorRenderer
{
retVal.append(target);
- retVal.append(COLON);
- retVal.append(QUOTE);
+ retVal.append(':');
+ retVal.append('\'');
int cnt = 0;
@@ -459,7 +446,7 @@ public class HtmlAjaxBehaviorRenderer extends ClientBehaviorRenderer
}
}
- retVal.append(QUOTE);
+ retVal.append('\'');
return retVal.toString();
}
return null;
@@ -473,15 +460,14 @@ public class HtmlAjaxBehaviorRenderer extends ClientBehaviorRenderer
int size, StringBuilder retVal, int cnt,
String strVal, SearchExpressionContext searchExpressionContext)
{
- strVal = strVal.trim();
- if (!EMPTY.equals(strVal))
+ if (LangUtils.isNotBlank(strVal))
{
SearchExpressionHandler handler = context.getFacesContext().getApplication().getSearchExpressionHandler();
- String clientId = handler.resolveClientId(searchExpressionContext, strVal);
+ String clientId = handler.resolveClientId(searchExpressionContext, strVal.trim());
retVal.append(clientId);
if (cnt < size)
{
- retVal.append(BLANK);
+ retVal.append(' ');
}
}
}
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCommandScriptRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCommandScriptRenderer.java
index ae1b390..2c802df 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCommandScriptRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCommandScriptRenderer.java
@@ -48,6 +48,7 @@ import org.apache.myfaces.renderkit.html.util.JavascriptContext;
import org.apache.myfaces.renderkit.html.util.JavascriptUtils;
import org.apache.myfaces.renderkit.html.util.ResourceUtils;
import org.apache.myfaces.util.ComponentUtils;
+import org.apache.myfaces.util.LangUtils;
import org.apache.myfaces.util.SharedStringBuilder;
import org.apache.myfaces.util.StringUtils;
@@ -222,9 +223,8 @@ public class HtmlCommandScriptRenderer extends HtmlRenderer
searchExpressionContext);
String onError = behavior.getOnerror();
- if (onError != null && !onError.trim().isEmpty())
+ if (LangUtils.isNotBlank(onError))
{
- //onError = AJAX_KEY_ONERROR + COLON + onError;
paramBuffer.setLength(0);
paramBuffer.append(AJAX_KEY_ONERROR);
paramBuffer.append(':');
@@ -235,8 +235,9 @@ public class HtmlCommandScriptRenderer extends HtmlRenderer
{
onError = null;
}
+
String onEvent = behavior.getOnevent();
- if (onEvent != null && !onEvent.trim().isEmpty())
+ if (LangUtils.isNotBlank(onEvent))
{
paramBuffer.setLength(0);
paramBuffer.append(AJAX_KEY_ONEVENT);
@@ -250,7 +251,7 @@ public class HtmlCommandScriptRenderer extends HtmlRenderer
}
String delay = behavior.getDelay();
- if (delay != null && !delay.trim().isEmpty())
+ if (LangUtils.isNotBlank(delay))
{
paramBuffer.setLength(0);
paramBuffer.append(AJAX_KEY_DELAY);
@@ -447,7 +448,7 @@ public class HtmlCommandScriptRenderer extends HtmlRenderer
for (int i = 0, size = options.size(); i < size; i++)
{
String option = options.get(i);
- if (option != null && !option.trim().isEmpty())
+ if (LangUtils.isNotBlank(option))
{
if (!first)
{
@@ -467,7 +468,7 @@ public class HtmlCommandScriptRenderer extends HtmlRenderer
private String resolveExpressionsAsParameter(StringBuilder retVal, String target, String expressions,
SearchExpressionContext searchExpressionContext)
{
- if (expressions != null && !expressions.trim().isEmpty())
+ if (LangUtils.isNotBlank(expressions))
{
retVal.setLength(0);
retVal.append(target);
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlRendererUtils.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlRendererUtils.java
index 37082e1..a91369c 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlRendererUtils.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlRendererUtils.java
@@ -72,6 +72,7 @@ import org.apache.myfaces.renderkit.html.util.OutcomeTargetUtils;
import org.apache.myfaces.util.ComponentUtils;
import org.apache.myfaces.util.StringUtils;
import org.apache.myfaces.renderkit.html.util.HTML;
+import org.apache.myfaces.util.LangUtils;
public final class HtmlRendererUtils
{
@@ -1513,7 +1514,7 @@ public final class HtmlRendererUtils
String userEventCode, String serverEventCode)
{
List<String> finalParams = new ArrayList<>(3);
- if (userEventCode != null && !userEventCode.trim().isEmpty())
+ if (LangUtils.isNotBlank(userEventCode))
{
// escape every ' in the user event code since it will
// be a string attribute of jsf.util.chain
@@ -1525,11 +1526,12 @@ public final class HtmlRendererUtils
getClientBehaviorScript(facesContext, uiComponent, sourceId,
eventName, clientBehaviors, behaviorCode, params);
- if (behaviorCode != null && !behaviorCode.toString().trim().isEmpty())
+ String behaviorCodeStr = behaviorCode.toString();
+ if (LangUtils.isNotBlank(behaviorCodeStr))
{
- finalParams.add(behaviorCode.toString());
+ finalParams.add(behaviorCodeStr);
}
- if (serverEventCode != null && !serverEventCode.trim().isEmpty())
+ if (LangUtils.isNotBlank(serverEventCode))
{
finalParams.add('\'' + escapeJavaScriptForChain(serverEventCode) + '\'');
}
@@ -1547,8 +1549,7 @@ public final class HtmlRendererUtils
}
else
{
- retVal.append("jsf.util.chain(document.getElementById('"
- + sourceId + "'), event,");
+ retVal.append("jsf.util.chain(document.getElementById('" + sourceId + "'), event,");
}
while (it.hasNext())
{
@@ -1599,7 +1600,7 @@ public final class HtmlRendererUtils
String userEventCode, String serverEventCode)
{
List<String> finalParams = new ArrayList<String>(3);
- if (userEventCode != null && !userEventCode.trim().isEmpty())
+ if (LangUtils.isNotBlank(userEventCode))
{
finalParams.add('\'' + escapeJavaScriptForChain(userEventCode) + '\'');
}
@@ -1616,15 +1617,20 @@ public final class HtmlRendererUtils
// ClientBehaviors for both events have to be checked for the Submitting hint
boolean submitting = submitting1 || submitting2;
- if (behaviorCode != null && !behaviorCode.toString().trim().isEmpty())
+
+ String behaviorCodeStr = behaviorCode.toString();
+ if (LangUtils.isNotBlank(behaviorCodeStr))
{
- finalParams.add(behaviorCode.toString());
+ finalParams.add(behaviorCodeStr);
}
- if (behaviorCode2 != null && !behaviorCode2.toString().trim().isEmpty())
+
+ String behaviorCode2Str = behaviorCode2.toString();
+ if (LangUtils.isNotBlank(behaviorCode2Str))
{
- finalParams.add(behaviorCode2.toString());
+ finalParams.add(behaviorCode2Str);
}
- if (serverEventCode != null && !serverEventCode.trim().isEmpty())
+
+ if (LangUtils.isNotBlank(serverEventCode))
{
finalParams.add('\'' + escapeJavaScriptForChain(serverEventCode) + '\'');
}
diff --git a/impl/src/main/java/org/apache/myfaces/util/LangUtils.java b/impl/src/main/java/org/apache/myfaces/util/LangUtils.java
index c72bda0..4dd7878 100644
--- a/impl/src/main/java/org/apache/myfaces/util/LangUtils.java
+++ b/impl/src/main/java/org/apache/myfaces/util/LangUtils.java
@@ -25,8 +25,35 @@ public class LangUtils
return value == null || value.isEmpty();
}
+ public static boolean isBlank(String str)
+ {
+ if (str == null)
+ {
+ return true;
+ }
+ int strLen = str.length();
+ if (strLen == 0)
+ {
+ return true;
+ }
+
+ for (int i = 0; i < strLen; i++)
+ {
+ if (!Character.isWhitespace(str.charAt(i)))
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+
public static boolean isNotEmpty(String value)
{
return !isEmpty(value);
}
+
+ public static boolean isNotBlank(String value)
+ {
+ return !isBlank(value);
+ }
}
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/AttributeHandler.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/AttributeHandler.java
index 2de677c..80421af 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/AttributeHandler.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/AttributeHandler.java
@@ -37,6 +37,7 @@ import javax.faces.view.facelets.TagHandler;
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFFaceletAttribute;
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFFaceletTag;
import org.apache.myfaces.util.ClassUtils;
+import org.apache.myfaces.util.LangUtils;
import org.apache.myfaces.view.facelets.FaceletCompositionContext;
/**
@@ -331,7 +332,7 @@ public class AttributeHandler extends TagHandler implements InterfaceDescriptorC
Class clazz = String.class;
String type = _type.getValue(ctx);
- if (type != null && !type.trim().isEmpty())
+ if (LangUtils.isNotBlank(type))
{
try
{
diff --git a/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java b/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java
index 80f1066..2ef82b6 100644
--- a/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java
+++ b/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java
@@ -78,6 +78,7 @@ import org.apache.myfaces.spi.ServiceProviderFinder;
import org.apache.myfaces.spi.ServiceProviderFinderFactory;
import org.apache.myfaces.view.facelets.ViewPoolProcessor;
import org.apache.myfaces.context.ReleasableExternalContext;
+import org.apache.myfaces.util.LangUtils;
/**
* Performs common initialization tasks.
@@ -434,7 +435,7 @@ public abstract class AbstractFacesInitializer implements FacesInitializer
{
String expressionFactoryClassName
= MyfacesConfig.getCurrentInstance(externalContext).getExpressionFactory();
- if (expressionFactoryClassName != null && !expressionFactoryClassName.trim().isEmpty())
+ if (LangUtils.isNotBlank(expressionFactoryClassName))
{
if (log.isLoggable(Level.FINE))
{