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/27 22:11:50 UTC
svn commit: r1776209 - in /myfaces/core/branches/2.3.x/impl/src:
main/java/org/apache/myfaces/component/search/SearchExpressionHandlerImpl.java
test/java/org/apache/myfaces/component/search/SearchExpressionImplTest.java
Author: tandraschko
Date: Tue Dec 27 22:11:49 2016
New Revision: 1776209
URL: http://svn.apache.org/viewvc?rev=1776209&view=rev
Log:
MYFACES-4075 SearchExpression API (improved handling with spaces)
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/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=1776209&r1=1776208&r2=1776209&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 Tue Dec 27 22:11:49 2016
@@ -61,6 +61,15 @@ public class SearchExpressionHandlerImpl
@Override
public String resolveClientId(SearchExpressionContext searchExpressionContext, String expression)
{
+ if (expression == null)
+ {
+ expression = "";
+ }
+ else
+ {
+ expression = expression.trim();
+ }
+
FacesContext facesContext = searchExpressionContext.getFacesContext();
SearchExpressionHandler handler = facesContext.getApplication().getSearchExpressionHandler();
@@ -123,16 +132,23 @@ public class SearchExpressionHandlerImpl
}
@Override
- public List<String> resolveClientIds(SearchExpressionContext searchExpressionContext,
- String expressions)
+ public List<String> resolveClientIds(SearchExpressionContext searchExpressionContext, String expressions)
{
+ if (expressions == null)
+ {
+ expressions = "";
+ }
+ else
+ {
+ expressions = expressions.trim();
+ }
+
FacesContext facesContext = searchExpressionContext.getFacesContext();
SearchExpressionHandler handler = facesContext.getApplication().getSearchExpressionHandler();
CollectClientIdsCallback callback = new CollectClientIdsCallback();
- for (String expression : facesContext.getApplication().getSearchExpressionHandler().splitExpressions(
- facesContext, expressions))
+ for (String expression : handler.splitExpressions(facesContext, expressions))
{
if (handler.isPassthroughExpression(searchExpressionContext, expression))
{
@@ -203,6 +219,15 @@ public class SearchExpressionHandlerImpl
public void resolveComponent(SearchExpressionContext searchExpressionContext, String expression,
ContextCallback callback)
{
+ if (expression == null)
+ {
+ expression = "";
+ }
+ else
+ {
+ expression = expression.trim();
+ }
+
FacesContext facesContext = searchExpressionContext.getFacesContext();
SingleInvocationCallback checkCallback = new SingleInvocationCallback(callback);
@@ -266,8 +291,17 @@ public class SearchExpressionHandlerImpl
@Override
public void resolveComponents(SearchExpressionContext searchExpressionContext, String expressions,
- ContextCallback callback)
+ ContextCallback callback)
{
+ if (expressions == null)
+ {
+ expressions = "";
+ }
+ else
+ {
+ expressions = expressions.trim();
+ }
+
FacesContext facesContext = searchExpressionContext.getFacesContext();
SearchExpressionHandler handler = facesContext.getApplication().getSearchExpressionHandler();
@@ -333,9 +367,20 @@ public class SearchExpressionHandlerImpl
public void invokeOnComponent(final SearchExpressionContext searchExpressionContext,
UIComponent previous, String topExpression, ContextCallback topCallback)
{
+ if (topExpression == null)
+ {
+ topExpression = "";
+ }
+ else
+ {
+ topExpression = topExpression.trim();
+ }
+
// Command pattern to apply the keyword or command to the base and then invoke the callback
FacesContext facesContext = searchExpressionContext.getFacesContext();
+ SearchExpressionHandler handler = facesContext.getApplication().getSearchExpressionHandler();
+
UIComponent currentBase = previous;
//Step 1: find base
@@ -345,8 +390,7 @@ public class SearchExpressionHandlerImpl
{
UIComponent findBase;
findBase = SearchComponentUtils.getRootComponent(currentBase);
- facesContext.getApplication().getSearchExpressionHandler().invokeOnComponent(
- searchExpressionContext, findBase, topExpression.substring(1), topCallback);
+ handler.invokeOnComponent(searchExpressionContext, findBase, topExpression.substring(1), topCallback);
return;
}
@@ -363,8 +407,7 @@ public class SearchExpressionHandlerImpl
topExpression.substring(1+command.length()+1) : null;
final ContextCallback parentCallback = topCallback;
- final SearchExpressionHandler currentInstance =
- facesContext.getApplication().getSearchExpressionHandler();
+
// If the keyword is @child, @composite, @form, @namingcontainer, @next, @none, @parent, @previous,
// @root, @this , all commands change the source to be applied the action
@@ -380,7 +423,7 @@ public class SearchExpressionHandlerImpl
@Override
public void invokeContextCallback(FacesContext facesContext, UIComponent target)
{
- currentInstance.invokeOnComponent(
+ handler.invokeOnComponent(
searchExpressionContext, target, remaining, parentCallback);
}
});
@@ -454,9 +497,6 @@ public class SearchExpressionHandlerImpl
String targetClientId = contextClientId.substring(0, startCommon+base.length()) +
expression.substring(base.length());
- final SearchExpressionHandler currentHandler =
- facesContext.getApplication().getSearchExpressionHandler();
-
if (nextExpression != null)
{
final String childExpression = nextExpression;
@@ -464,7 +504,7 @@ public class SearchExpressionHandlerImpl
parent.invokeOnComponent(facesContext, targetClientId, new ContextCallback(){
public void invokeContextCallback(FacesContext context, UIComponent target)
{
- currentHandler.invokeOnComponent(
+ handler.invokeOnComponent(
searchExpressionContext, target, childExpression, topCallback);
}
});
@@ -502,6 +542,15 @@ public class SearchExpressionHandlerImpl
@Override
public boolean isPassthroughExpression(SearchExpressionContext searchExpressionContext, String topExpression)
{
+ if (topExpression == null)
+ {
+ topExpression = "";
+ }
+ else
+ {
+ topExpression = topExpression.trim();
+ }
+
FacesContext facesContext = searchExpressionContext.getFacesContext();
// Command pattern to apply the keyword or command to the base and then invoke the callback
boolean passthrough = false;
@@ -555,6 +604,15 @@ public class SearchExpressionHandlerImpl
public boolean isValidExpression(SearchExpressionContext searchExpressionContext, String topExpression)
{
+ if (topExpression == null)
+ {
+ topExpression = "";
+ }
+ else
+ {
+ topExpression = topExpression.trim();
+ }
+
FacesContext facesContext = searchExpressionContext.getFacesContext();
// Command pattern to apply the keyword or command to the base and then invoke the callback
boolean isValid = true;
@@ -726,7 +784,10 @@ public class SearchExpressionHandlerImpl
if (isSeparator)
{
// lets add token inside buffer to our tokens
- tokens.add(buffer.toString());
+ String bufferAsString = buffer.toString().trim();
+ if (bufferAsString.length() > 0) {
+ tokens.add(bufferAsString);
+ }
// now we need to clear buffer
buffer.delete(0, buffer.length());
}
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=1776209&r1=1776208&r2=1776209&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 Tue Dec 27 22:11:49 2016
@@ -96,7 +96,7 @@ public class SearchExpressionImplTest ex
Assert.assertEquals(componentId, "mainForm:showName");
componentId = facesContext.getApplication().getSearchExpressionHandler().resolveClientIds(
- searchContext, "@namingcontainer:showName").get(0);
+ searchContext, " @namingcontainer:showName ").get(0);
Assert.assertEquals(componentId, "mainForm:showName");
UIOutput name = (UIOutput) facesContext.getViewRoot().findComponent("mainForm:name");
@@ -147,6 +147,19 @@ public class SearchExpressionImplTest ex
//System.out.println(componentId);
}
});
+
+ facesContext.getViewRoot().invokeOnComponent(facesContext, "mainForm:table:3:baseText",
+ new ContextCallback()
+ {
+ @Override
+ public void invokeContextCallback(FacesContext context, UIComponent target)
+ {
+ SearchExpressionHandler handler = facesContext.getApplication().getSearchExpressionHandler();
+ SearchExpressionContext searchContext =
+ SearchExpressionContext.createSearchExpressionContext(context, target);
+ Assert.assertEquals(handler.resolveClientId(searchContext, "@next"), "mainForm:table:3:nestedText");
+ }
+ });
processRemainingPhases();
}
@@ -184,7 +197,7 @@ public class SearchExpressionImplTest ex
CollectComponentsCallback callback = new CollectComponentsCallback();
facesContext.getApplication().getSearchExpressionHandler().resolveComponents(
- searchContext, "@id(name)", callback);
+ searchContext, " @id(name) @none ", callback);
Assert.assertEquals(2, callback.getComponents().size());
@@ -302,14 +315,14 @@ public class SearchExpressionImplTest ex
Assert.assertTrue(handler.isValidExpression(searchContext, "mainForm:showName"));
Assert.assertTrue(handler.isValidExpression(searchContext, "mainForm:table:3:nested:1:nestedText"));
Assert.assertTrue(handler.isValidExpression(searchContext, "mainForm:table:3:baseText"));
- Assert.assertTrue(handler.isValidExpression(searchContext, "mainForm:table:0:baseText"));
+ Assert.assertTrue(handler.isValidExpression(searchContext, " mainForm:table:0:baseText"));
Assert.assertTrue(handler.isValidExpression(searchContext, "mainForm:table:3:nested:0:nestedText"));
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, "@this"));
Assert.assertTrue(handler.isValidExpression(searchContext, "@this:@parent:showName"));
- Assert.assertTrue(handler.isValidExpression(searchContext, "@parent:showName:@parent:showName"));
+ Assert.assertTrue(handler.isValidExpression(searchContext, "@parent:showName:@parent:showName "));
Assert.assertTrue(handler.isValidExpression(searchContext, "@form:showName"));
Assert.assertTrue(handler.isValidExpression(searchContext, "@namingcontainer:showName"));
Assert.assertTrue(handler.isValidExpression(searchContext, "@previous"));