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 2016/12/28 12:58:29 UTC
svn commit: r1776278 - in /myfaces/core/branches/2.3.x/impl/src:
main/java/org/apache/myfaces/component/search/
main/java/org/apache/myfaces/renderkit/html/
test/java/org/apache/myfaces/component/search/
Author: tandraschko
Date: Wed Dec 28 12:58:29 2016
New Revision: 1776278
URL: http://svn.apache.org/viewvc?rev=1776278&view=rev
Log:
MYFACES-4075 SearchExpression API ([perf] reuse context + improved handling with empty expressions)
Modified:
myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/SearchExpressionHandlerImpl.java
myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlAjaxBehaviorRenderer.java
myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/component/search/SearchExpressionImplTest.java
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/SearchExpressionHandlerImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/SearchExpressionHandlerImpl.java?rev=1776278&r1=1776277&r2=1776278&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/SearchExpressionHandlerImpl.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/SearchExpressionHandlerImpl.java Wed Dec 28 12:58:29 2016
@@ -66,14 +66,12 @@ public class SearchExpressionHandlerImpl
@Override
public String resolveClientId(SearchExpressionContext searchExpressionContext, String expression)
{
- if (expression == null)
+ if (expression == null || expression.trim().isEmpty())
{
- expression = "";
- }
- else
- {
- expression = expression.trim();
+ return null;
}
+
+ expression = expression.trim();
FacesContext facesContext = searchExpressionContext.getFacesContext();
SearchExpressionHandler handler = facesContext.getApplication().getSearchExpressionHandler();
@@ -139,14 +137,12 @@ public class SearchExpressionHandlerImpl
@Override
public List<String> resolveClientIds(SearchExpressionContext searchExpressionContext, String expressions)
{
- if (expressions == null)
+ if (expressions == null || expressions.trim().isEmpty())
{
- expressions = "";
- }
- else
- {
- expressions = expressions.trim();
+ return Collections.emptyList();
}
+
+ expressions = expressions.trim();
FacesContext facesContext = searchExpressionContext.getFacesContext();
SearchExpressionHandler handler = facesContext.getApplication().getSearchExpressionHandler();
@@ -224,22 +220,22 @@ public class SearchExpressionHandlerImpl
public void resolveComponent(SearchExpressionContext searchExpressionContext, String expression,
ContextCallback callback)
{
- if (expression == null)
+ if (expression == null || expression.trim().isEmpty())
{
- expression = "";
- }
- else
- {
- expression = expression.trim();
+ return;
}
+ expression = expression.trim();
+
FacesContext facesContext = searchExpressionContext.getFacesContext();
+ SearchExpressionHandler handler = facesContext.getApplication().getSearchExpressionHandler();
+
SingleInvocationCallback checkCallback = new SingleInvocationCallback(callback);
addHint(searchExpressionContext, SearchExpressionHint.RESOLVE_SINGLE_COMPONENT);
- facesContext.getApplication().getSearchExpressionHandler().invokeOnComponent(
- searchExpressionContext, searchExpressionContext.getSource(), expression, checkCallback);
+ handler.invokeOnComponent(searchExpressionContext, searchExpressionContext.getSource(),
+ expression, checkCallback);
if (!checkCallback.isInvoked() && isHintSet(searchExpressionContext, SearchExpressionHint.PARENT_FALLBACK))
{
@@ -298,15 +294,13 @@ public class SearchExpressionHandlerImpl
public void resolveComponents(SearchExpressionContext searchExpressionContext, String expressions,
ContextCallback callback)
{
- if (expressions == null)
- {
- expressions = "";
- }
- else
+ if (expressions == null || expressions.trim().isEmpty())
{
- expressions = expressions.trim();
+ return;
}
+ expressions = expressions.trim();
+
FacesContext facesContext = searchExpressionContext.getFacesContext();
SearchExpressionHandler handler = facesContext.getApplication().getSearchExpressionHandler();
@@ -372,14 +366,12 @@ public class SearchExpressionHandlerImpl
public void invokeOnComponent(final SearchExpressionContext searchExpressionContext,
UIComponent previous, String topExpression, ContextCallback topCallback)
{
- if (topExpression == null)
+ if (topExpression == null || topExpression.trim().isEmpty())
{
- topExpression = "";
- }
- else
- {
- topExpression = topExpression.trim();
+ return;
}
+
+ topExpression = topExpression.trim();
// Command pattern to apply the keyword or command to the base and then invoke the callback
FacesContext facesContext = searchExpressionContext.getFacesContext();
@@ -636,14 +628,12 @@ public class SearchExpressionHandlerImpl
public boolean isValidExpression(SearchExpressionContext searchExpressionContext, String topExpression)
{
- if (topExpression == null)
- {
- topExpression = "";
- }
- else
+ if (topExpression == null || topExpression.trim().isEmpty())
{
- topExpression = topExpression.trim();
+ return true;
}
+
+ topExpression = topExpression.trim();
FacesContext facesContext = searchExpressionContext.getFacesContext();
// Command pattern to apply the keyword or command to the base and then invoke the callback
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlAjaxBehaviorRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlAjaxBehaviorRenderer.java?rev=1776278&r1=1776277&r2=1776278&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlAjaxBehaviorRenderer.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlAjaxBehaviorRenderer.java Wed Dec 28 12:58:29 2016
@@ -430,6 +430,8 @@ public class HtmlAjaxBehaviorRenderer ex
int cnt = 0;
+ SearchExpressionContext searchExpressionContext = null;
+
// perf: dataHolder is a Collection : ajaxBehaviour.getExecute()
// and ajaxBehaviour.getRender() API
// In most cases comes here a ArrayList, because
@@ -440,16 +442,28 @@ public class HtmlAjaxBehaviorRenderer ex
List<String> list = (List<String>) dataHolder;
for (; cnt < executeSize; cnt++)
{
+ if (searchExpressionContext == null)
+ {
+ searchExpressionContext = SearchExpressionContext.createSearchExpressionContext(
+ context.getFacesContext(), context.getComponent(), EXPRESSION_HINTS, null);
+ }
+
String strVal = list.get(cnt);
- build(context, executeSize, retVal, cnt, strVal);
+ build(context, executeSize, retVal, cnt, strVal, searchExpressionContext);
}
}
else
{
for (String strVal : dataHolder)
{
+ if (searchExpressionContext == null)
+ {
+ searchExpressionContext = SearchExpressionContext.createSearchExpressionContext(
+ context.getFacesContext(), context.getComponent(), EXPRESSION_HINTS, null);
+ }
+
cnt++;
- build(context, executeSize, retVal, cnt, strVal);
+ build(context, executeSize, retVal, cnt, strVal, searchExpressionContext);
}
}
@@ -465,7 +479,7 @@ public class HtmlAjaxBehaviorRenderer ex
public void build(ClientBehaviorContext context,
int size, StringBuilder retVal, int cnt,
- String strVal)
+ String strVal, SearchExpressionContext searchExpressionContext)
{
strVal = strVal.trim();
if (!EMPTY.equals(strVal))
@@ -480,9 +494,6 @@ public class HtmlAjaxBehaviorRenderer ex
{
retVal.append(strVal);
}*/
- SearchExpressionContext searchExpressionContext =
- SearchExpressionContext.createSearchExpressionContext(context.getFacesContext(),
- context.getComponent(), EXPRESSION_HINTS, null);
SearchExpressionHandler handler = context.getFacesContext().getApplication().getSearchExpressionHandler();
String clientId = handler.resolveClientId(searchExpressionContext, strVal);
retVal.append(clientId);
@@ -493,7 +504,8 @@ public class HtmlAjaxBehaviorRenderer ex
}
}
- private final String getComponentId(ClientBehaviorContext context, String id)
+ /*
+ private String getComponentId(ClientBehaviorContext context, String id)
{
UIComponent contextComponent = context.getComponent();
@@ -509,8 +521,9 @@ public class HtmlAjaxBehaviorRenderer ex
}
throw new FacesException("Component with id:" + id + " not found");
}
+ */
- private final void assertBehavior(ClientBehavior behavior)
+ private void assertBehavior(ClientBehavior behavior)
{
if (!(behavior instanceof AjaxBehavior))
{
Modified: myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/component/search/SearchExpressionImplTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/component/search/SearchExpressionImplTest.java?rev=1776278&r1=1776277&r2=1776278&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/component/search/SearchExpressionImplTest.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/component/search/SearchExpressionImplTest.java Wed Dec 28 12:58:29 2016
@@ -238,6 +238,8 @@ public class SearchExpressionImplTest ex
String clientId = handler.resolveClientId(searchContextWithParentFallback, "@none");
Assert.assertNotNull(clientId);
+ Assert.assertNull(handler.resolveClientId(searchContextWithParentFallback, " "));
+
expressionHints = new HashSet<SearchExpressionHint>();
expressionHints.add(SearchExpressionHint.IGNORE_NO_RESULT);
SearchExpressionContext searchContextWithIgnoreNoResult =
@@ -320,6 +322,7 @@ public class SearchExpressionImplTest ex
Assert.assertTrue(handler.isValidExpression(searchContext, "mainForm:table:3:nested"));
Assert.assertTrue(handler.isValidExpression(searchContext, "mainForm:table:1:nested:0:nestedText"));
+ Assert.assertTrue(handler.isValidExpression(searchContext, " "));
Assert.assertTrue(handler.isValidExpression(searchContext, "@this"));
Assert.assertTrue(handler.isValidExpression(searchContext, "@this:@parent:showName"));
Assert.assertTrue(handler.isValidExpression(searchContext, "@parent:showName:@parent:showName "));