You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2016/11/25 01:55:54 UTC
svn commit: r1771239 - in /myfaces/core/branches/2.3.x:
api/src/main/java/javax/faces/component/search/
impl/src/main/java/org/apache/myfaces/component/search/
impl/src/main/java/org/apache/myfaces/renderkit/html/
impl/src/main/java/org/apache/myfaces/...
Author: lu4242
Date: Fri Nov 25 01:55:53 2016
New Revision: 1771239
URL: http://svn.apache.org/viewvc?rev=1771239&view=rev
Log:
MYFACES-4075 SearchExpression API (working proposal)
Added:
myfaces/core/branches/2.3.x/impl/src/test/resources/org/apache/myfaces/renderkit/html/behavior/
myfaces/core/branches/2.3.x/impl/src/test/resources/org/apache/myfaces/renderkit/html/behavior/role.xhtml
- copied unchanged from r1757774, myfaces/core/branches/2.3.x/impl/src/test/resources/org/apache/myfaces/renderkit/html/role.xhtml
Modified:
myfaces/core/branches/2.3.x/api/src/main/java/javax/faces/component/search/SearchExpressionHandler.java
myfaces/core/branches/2.3.x/api/src/main/java/javax/faces/component/search/SearchExpressionHandlerWrapper.java
myfaces/core/branches/2.3.x/api/src/main/java/javax/faces/component/search/SearchExpressionHint.java
myfaces/core/branches/2.3.x/api/src/main/java/javax/faces/component/search/SearchExpressionResolver.java
myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/AllSearchExpressionResolver.java
myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/ChildSearchExpressionResolver.java
myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/CompositeComponentParentSearchExpressionResolver.java
myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/CompositeSearchExpressionResolver.java
myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/FormSearchExpressionResolver.java
myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/IdSearchExpressionResolver.java
myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/NamingContainerSearchExpressionResolver.java
myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/NextSearchExpressionResolver.java
myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/NoneSearchExpressionResolver.java
myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/ParentSearchExpressionResolver.java
myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/PreviousSearchExpressionResolver.java
myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/RootSearchExpressionResolver.java
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/component/search/ThisSearchExpressionResolver.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/main/java/org/apache/myfaces/view/facelets/tag/composite/AttachedObjectTargetImpl.java
myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/component/search/SearchExpressionImplTest.java
myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/AbstractClientBehaviorTestCase.java
myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlOutcomeTargetButtonClientBehaviorRendererTest.java
myfaces/core/branches/2.3.x/impl/src/test/resources/org/apache/myfaces/component/search/search1.xhtml
Modified: myfaces/core/branches/2.3.x/api/src/main/java/javax/faces/component/search/SearchExpressionHandler.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/api/src/main/java/javax/faces/component/search/SearchExpressionHandler.java?rev=1771239&r1=1771238&r2=1771239&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/api/src/main/java/javax/faces/component/search/SearchExpressionHandler.java (original)
+++ myfaces/core/branches/2.3.x/api/src/main/java/javax/faces/component/search/SearchExpressionHandler.java Fri Nov 25 01:55:53 2016
@@ -62,12 +62,6 @@ public abstract class SearchExpressionHa
public abstract String[] splitExpressions(String expressions);
- public abstract List<UIComponent> findComponentFromExpression(SearchExpressionContext searchExpressionContext,
- UIComponent source, String topExpression);
-
- public abstract List<UIComponent> applyKeyword(SearchExpressionContext searchExpressionContext, UIComponent last,
- String command);
-
public abstract boolean isPassthroughExpression(SearchExpressionContext searchExpressionContext, String expression);
public abstract boolean isValidExpression(SearchExpressionContext searchExpressionContext, String expression);
Modified: myfaces/core/branches/2.3.x/api/src/main/java/javax/faces/component/search/SearchExpressionHandlerWrapper.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/api/src/main/java/javax/faces/component/search/SearchExpressionHandlerWrapper.java?rev=1771239&r1=1771238&r2=1771239&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/api/src/main/java/javax/faces/component/search/SearchExpressionHandlerWrapper.java (original)
+++ myfaces/core/branches/2.3.x/api/src/main/java/javax/faces/component/search/SearchExpressionHandlerWrapper.java Fri Nov 25 01:55:53 2016
@@ -67,4 +67,35 @@ public abstract class SearchExpressionHa
getWrapped().applyKeyword(searchExpressionContext, last, command, topCallback);
}
+ @Override
+ public boolean isValidExpression(SearchExpressionContext searchExpressionContext, String expression)
+ {
+ return getWrapped().isValidExpression(searchExpressionContext, expression);
+ }
+
+ @Override
+ public boolean isPassthroughExpression(SearchExpressionContext searchExpressionContext, String expression)
+ {
+ return getWrapped().isPassthroughExpression(searchExpressionContext, expression);
+ }
+
+ @Override
+ public String[] splitExpressions(String expressions)
+ {
+ return getWrapped().splitExpressions(expressions);
+ }
+
+ @Override
+ public void resolveComponents(
+ SearchExpressionContext searchExpressionContext, String expressions, ContextCallback callback)
+ {
+ getWrapped().resolveComponents(searchExpressionContext, expressions, callback);
+ }
+
+ @Override
+ public String resolveClientId(SearchExpressionContext searchExpressionContext, String expressions)
+ {
+ return getWrapped().resolveClientId(searchExpressionContext, expressions);
+ }
+
}
Modified: myfaces/core/branches/2.3.x/api/src/main/java/javax/faces/component/search/SearchExpressionHint.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/api/src/main/java/javax/faces/component/search/SearchExpressionHint.java?rev=1771239&r1=1771238&r2=1771239&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/api/src/main/java/javax/faces/component/search/SearchExpressionHint.java (original)
+++ myfaces/core/branches/2.3.x/api/src/main/java/javax/faces/component/search/SearchExpressionHint.java Fri Nov 25 01:55:53 2016
@@ -28,11 +28,20 @@ public enum SearchExpressionHint
IGNORE_NO_RESULT,
PARENT_FALLBACK,
-
+
+ /**
+ * Indicate the algorithm is extracting client ids from expressions.
+ */
RESOLVE_CLIENT_ID,
+ /**
+ * Indicate that the method is collecting a list of real UIComponent instances.
+ */
RESOLVE_COMPONENT_LIST,
- RESOLVE_AJAX
+ /**
+ * Indicate that some expressions can be resolved on the client side.
+ */
+ EXECUTE_CLIENT_SIDE
}
Modified: myfaces/core/branches/2.3.x/api/src/main/java/javax/faces/component/search/SearchExpressionResolver.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/api/src/main/java/javax/faces/component/search/SearchExpressionResolver.java?rev=1771239&r1=1771238&r2=1771239&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/api/src/main/java/javax/faces/component/search/SearchExpressionResolver.java (original)
+++ myfaces/core/branches/2.3.x/api/src/main/java/javax/faces/component/search/SearchExpressionResolver.java Fri Nov 25 01:55:53 2016
@@ -27,7 +27,7 @@ import javax.faces.component.UIComponent
public abstract class SearchExpressionResolver
{
- public abstract void resolve(SearchKeywordContext keywordContext, UIComponent last, String keyword);
+ public abstract void resolve(SearchKeywordContext keywordContext, UIComponent last, String command);
/**
* Check if the keyword can be resolved by the current resolver
@@ -36,7 +36,7 @@ public abstract class SearchExpressionRe
* @param keyword
* @return
*/
- public abstract boolean matchKeyword(SearchExpressionContext searchExpressionContext, String keyword);
+ public abstract boolean matchKeyword(SearchExpressionContext searchExpressionContext, String command);
/**
* A passthrough keyword is a keyword that according to the context does not require to be resolved on the server,
@@ -46,7 +46,7 @@ public abstract class SearchExpressionRe
* @param keyword
* @return
*/
- public boolean isPassthroughKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isPassthrough(SearchExpressionContext searchExpressionContext, String command)
{
return false;
}
@@ -59,7 +59,7 @@ public abstract class SearchExpressionRe
* @param keyword
* @return
*/
- public boolean isLeafKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isLeaf(SearchExpressionContext searchExpressionContext, String command)
{
return false;
}
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/AllSearchExpressionResolver.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/AllSearchExpressionResolver.java?rev=1771239&r1=1771238&r2=1771239&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/AllSearchExpressionResolver.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/AllSearchExpressionResolver.java Fri Nov 25 01:55:53 2016
@@ -47,6 +47,11 @@ public class AllSearchExpressionResolver
}
}
+ public String getKeyword()
+ {
+ return ALL_KEYWORD;
+ }
+
@Override
public boolean matchKeyword(SearchExpressionContext searchExpressionContext, String keyword)
{
@@ -54,12 +59,12 @@ public class AllSearchExpressionResolver
}
@Override
- public boolean isPassthroughKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isPassthrough(SearchExpressionContext searchExpressionContext, String keyword)
{
return false;
}
- public boolean isLeafKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isLeaf(SearchExpressionContext searchExpressionContext, String keyword)
{
return true;
}
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/ChildSearchExpressionResolver.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/ChildSearchExpressionResolver.java?rev=1771239&r1=1771238&r2=1771239&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/ChildSearchExpressionResolver.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/ChildSearchExpressionResolver.java Fri Nov 25 01:55:53 2016
@@ -69,7 +69,7 @@ public class ChildSearchExpressionResolv
{
count++;
}
- if (count == childNumber)
+ if (count == childNumber + 1)
{
expressionContext.invokeContextCallback(expressionContext.getFacesContext(),
last.getChildren().get(childNumber));
@@ -99,6 +99,11 @@ public class ChildSearchExpressionResolv
}
}
+ public String getKeyword()
+ {
+ return CHILD_KEYWORD;
+ }
+
@Override
public boolean matchKeyword(SearchExpressionContext searchExpressionContext, String command)
{
@@ -127,12 +132,12 @@ public class ChildSearchExpressionResolv
}
@Override
- public boolean isPassthroughKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isPassthrough(SearchExpressionContext searchExpressionContext, String keyword)
{
return false;
}
- public boolean isLeafKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isLeaf(SearchExpressionContext searchExpressionContext, String keyword)
{
return false;
}
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/CompositeComponentParentSearchExpressionResolver.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/CompositeComponentParentSearchExpressionResolver.java?rev=1771239&r1=1771238&r2=1771239&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/CompositeComponentParentSearchExpressionResolver.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/CompositeComponentParentSearchExpressionResolver.java Fri Nov 25 01:55:53 2016
@@ -48,12 +48,12 @@ public class CompositeComponentParentSea
}
@Override
- public boolean isPassthroughKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isPassthrough(SearchExpressionContext searchExpressionContext, String keyword)
{
return false;
}
- public boolean isLeafKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isLeaf(SearchExpressionContext searchExpressionContext, String keyword)
{
return false;
}
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/CompositeSearchExpressionResolver.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/CompositeSearchExpressionResolver.java?rev=1771239&r1=1771238&r2=1771239&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/CompositeSearchExpressionResolver.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/CompositeSearchExpressionResolver.java Fri Nov 25 01:55:53 2016
@@ -86,31 +86,35 @@ public class CompositeSearchExpressionRe
}
@Override
- public boolean isPassthroughKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isPassthrough(SearchExpressionContext searchExpressionContext, String keyword)
{
int sz = this.size;
for (int i = 0; i < sz; i++)
{
if (this.resolvers[i].matchKeyword(searchExpressionContext, keyword))
{
- return this.resolvers[i].isPassthroughKeyword(searchExpressionContext, keyword);
+ return this.resolvers[i].isPassthrough(searchExpressionContext, keyword);
}
}
return false;
}
@Override
- public boolean isLeafKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isLeaf(SearchExpressionContext searchExpressionContext, String keyword)
{
int sz = this.size;
for (int i = 0; i < sz; i++)
{
if (this.resolvers[i].matchKeyword(searchExpressionContext, keyword))
{
- return this.resolvers[i].isLeafKeyword(searchExpressionContext, keyword);
+ return this.resolvers[i].isLeaf(searchExpressionContext, keyword);
}
}
return false;
}
+ public String getKeyword()
+ {
+ return null;
+ }
}
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/FormSearchExpressionResolver.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/FormSearchExpressionResolver.java?rev=1771239&r1=1771238&r2=1771239&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/FormSearchExpressionResolver.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/FormSearchExpressionResolver.java Fri Nov 25 01:55:53 2016
@@ -66,10 +66,10 @@ public class FormSearchExpressionResolve
}
@Override
- public boolean isPassthroughKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isPassthrough(SearchExpressionContext searchExpressionContext, String keyword)
{
if (searchExpressionContext.getExpressionHints() != null &&
- searchExpressionContext.getExpressionHints().contains(SearchExpressionHint.RESOLVE_AJAX))
+ searchExpressionContext.getExpressionHints().contains(SearchExpressionHint.EXECUTE_CLIENT_SIDE))
{
return true;
}
@@ -80,7 +80,7 @@ public class FormSearchExpressionResolve
}
@Override
- public boolean isLeafKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isLeaf(SearchExpressionContext searchExpressionContext, String keyword)
{
return false;
}
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/IdSearchExpressionResolver.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/IdSearchExpressionResolver.java?rev=1771239&r1=1771238&r2=1771239&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/IdSearchExpressionResolver.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/IdSearchExpressionResolver.java Fri Nov 25 01:55:53 2016
@@ -133,6 +133,11 @@ public class IdSearchExpressionResolver
}
}
+ public String getKeyword()
+ {
+ return ID_KEYWORD;
+ }
+
@Override
public boolean matchKeyword(SearchExpressionContext searchExpressionContext, String command)
{
@@ -161,13 +166,13 @@ public class IdSearchExpressionResolver
}
@Override
- public boolean isPassthroughKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isPassthrough(SearchExpressionContext searchExpressionContext, String keyword)
{
return false;
}
@Override
- public boolean isLeafKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isLeaf(SearchExpressionContext searchExpressionContext, String keyword)
{
return false;
}
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/NamingContainerSearchExpressionResolver.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/NamingContainerSearchExpressionResolver.java?rev=1771239&r1=1771238&r2=1771239&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/NamingContainerSearchExpressionResolver.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/NamingContainerSearchExpressionResolver.java Fri Nov 25 01:55:53 2016
@@ -66,13 +66,13 @@ public class NamingContainerSearchExpres
}
@Override
- public boolean isPassthroughKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isPassthrough(SearchExpressionContext searchExpressionContext, String keyword)
{
return false;
}
@Override
- public boolean isLeafKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isLeaf(SearchExpressionContext searchExpressionContext, String keyword)
{
return false;
}
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/NextSearchExpressionResolver.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/NextSearchExpressionResolver.java?rev=1771239&r1=1771238&r2=1771239&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/NextSearchExpressionResolver.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/NextSearchExpressionResolver.java Fri Nov 25 01:55:53 2016
@@ -21,6 +21,7 @@ package org.apache.myfaces.component.sea
import java.util.List;
import javax.faces.component.UIComponent;
+import javax.faces.component.search.Markup;
import javax.faces.component.search.SearchExpressionContext;
import javax.faces.component.search.SearchKeywordContext;
import javax.faces.component.search.SearchExpressionResolver;
@@ -40,14 +41,27 @@ public class NextSearchExpressionResolve
UIComponent parent = last.getParent();
if (parent.getChildCount() > 1)
{
- List<UIComponent> children = parent.getChildren();
- int index = children.indexOf(last);
+ List<UIComponent> children = parent.getChildren();
+ int index = children.indexOf(last);
- if (index < parent.getChildCount() - 1)
+ if (index < parent.getChildCount() - 1)
+ {
+ int nextIndex = -1;
+ do
+ {
+ index++;
+ if(!(children.get(index) instanceof Markup))
+ {
+ nextIndex = index;
+ }
+ } while (nextIndex == -1 && index < parent.getChildCount() - 1);
+
+ if (nextIndex != -1)
{
expressionContext.invokeContextCallback(expressionContext.getFacesContext(),
- children.get(index + 1));
+ children.get(nextIndex));
}
+ }
}
expressionContext.setCommandResolved(true);
}
@@ -60,13 +74,13 @@ public class NextSearchExpressionResolve
}
@Override
- public boolean isPassthroughKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isPassthrough(SearchExpressionContext searchExpressionContext, String keyword)
{
return false;
}
@Override
- public boolean isLeafKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isLeaf(SearchExpressionContext searchExpressionContext, String keyword)
{
return false;
}
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/NoneSearchExpressionResolver.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/NoneSearchExpressionResolver.java?rev=1771239&r1=1771238&r2=1771239&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/NoneSearchExpressionResolver.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/NoneSearchExpressionResolver.java Fri Nov 25 01:55:53 2016
@@ -47,13 +47,13 @@ public class NoneSearchExpressionResolve
}
@Override
- public boolean isPassthroughKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isPassthrough(SearchExpressionContext searchExpressionContext, String keyword)
{
return false;
}
@Override
- public boolean isLeafKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isLeaf(SearchExpressionContext searchExpressionContext, String keyword)
{
return true;
}
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/ParentSearchExpressionResolver.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/ParentSearchExpressionResolver.java?rev=1771239&r1=1771238&r2=1771239&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/ParentSearchExpressionResolver.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/ParentSearchExpressionResolver.java Fri Nov 25 01:55:53 2016
@@ -40,6 +40,11 @@ public class ParentSearchExpressionResol
}
}
+ public String getKeyword()
+ {
+ return PARENT_KEYWORD;
+ }
+
@Override
public boolean matchKeyword(SearchExpressionContext searchExpressionContext, String keyword)
{
@@ -47,13 +52,13 @@ public class ParentSearchExpressionResol
}
@Override
- public boolean isPassthroughKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isPassthrough(SearchExpressionContext searchExpressionContext, String keyword)
{
return false;
}
@Override
- public boolean isLeafKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isLeaf(SearchExpressionContext searchExpressionContext, String keyword)
{
return false;
}
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/PreviousSearchExpressionResolver.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/PreviousSearchExpressionResolver.java?rev=1771239&r1=1771238&r2=1771239&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/PreviousSearchExpressionResolver.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/PreviousSearchExpressionResolver.java Fri Nov 25 01:55:53 2016
@@ -21,6 +21,7 @@ package org.apache.myfaces.component.sea
import java.util.List;
import javax.faces.component.UIComponent;
+import javax.faces.component.search.Markup;
import javax.faces.component.search.SearchExpressionContext;
import javax.faces.component.search.SearchKeywordContext;
import javax.faces.component.search.SearchExpressionResolver;
@@ -46,8 +47,21 @@ public class PreviousSearchExpressionRes
if (index > 0)
{
- expressionContext.invokeContextCallback(
- expressionContext.getFacesContext(), children.get(index - 1));
+ int nextIndex = -1;
+ do
+ {
+ index--;
+ if(!(children.get(index) instanceof Markup))
+ {
+ nextIndex = index;
+ }
+ } while (nextIndex == -1 && index > 0);
+
+ if (nextIndex != -1)
+ {
+ expressionContext.invokeContextCallback(
+ expressionContext.getFacesContext(), children.get(nextIndex));
+ }
}
}
expressionContext.setCommandResolved(true);
@@ -61,13 +75,13 @@ public class PreviousSearchExpressionRes
}
@Override
- public boolean isPassthroughKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isPassthrough(SearchExpressionContext searchExpressionContext, String keyword)
{
return false;
}
@Override
- public boolean isLeafKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isLeaf(SearchExpressionContext searchExpressionContext, String keyword)
{
return false;
}
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/RootSearchExpressionResolver.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/RootSearchExpressionResolver.java?rev=1771239&r1=1771238&r2=1771239&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/RootSearchExpressionResolver.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/RootSearchExpressionResolver.java Fri Nov 25 01:55:53 2016
@@ -41,6 +41,11 @@ public class RootSearchExpressionResolve
}
}
+ public String getKeyword()
+ {
+ return ROOT_KEYWORD;
+ }
+
@Override
public boolean matchKeyword(SearchExpressionContext searchExpressionContext, String keyword)
{
@@ -48,13 +53,13 @@ public class RootSearchExpressionResolve
}
@Override
- public boolean isPassthroughKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isPassthrough(SearchExpressionContext searchExpressionContext, String keyword)
{
return false;
}
@Override
- public boolean isLeafKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isLeaf(SearchExpressionContext searchExpressionContext, String keyword)
{
return false;
}
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=1771239&r1=1771238&r2=1771239&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 Fri Nov 25 01:55:53 2016
@@ -414,7 +414,8 @@ public class SearchExpressionHandlerImpl
if (parent != null)
{
target = parent.findComponent(expression);
- if (target == null)
+ if (target == null && !searchExpressionContext.getExpressionHints().contains(
+ SearchExpressionHint.RESOLVE_COMPONENT_LIST))
{
contextClientId = parent.getClientId(facesContext);
// If no component is found,
@@ -499,7 +500,7 @@ public class SearchExpressionHandlerImpl
// If the keyword is @child, @composite, @form, @namingcontainer, @next, @none, @parent, @previous,
// @root, @this , all commands change the source to be applied the action
- passthrough = facesContext.getApplication().getSearchExpressionResolver().isPassthroughKeyword(
+ passthrough = facesContext.getApplication().getSearchExpressionResolver().isPassthrough(
searchExpressionContext, command);
if (passthrough)
@@ -554,7 +555,7 @@ public class SearchExpressionHandlerImpl
searchExpressionContext, command);
if (remaining != null)
{
- if (facesContext.getApplication().getSearchExpressionResolver().isLeafKeyword(
+ if (facesContext.getApplication().getSearchExpressionResolver().isLeaf(
searchExpressionContext, command))
{
isValid = false;
@@ -812,217 +813,4 @@ public class SearchExpressionHandlerImpl
return tokens.toArray(new String[tokens.size()]);
}
- public List<UIComponent> findComponentFromExpression(SearchExpressionContext searchExpressionContext,
- UIComponent source, String topExpression)
- {
- // Command pattern to apply the keyword or command to the base and then invoke the callback
- FacesContext facesContext = searchExpressionContext.getFacesContext();
- UIComponent currentBase = source;
- List<UIComponent> responseList = null;
-
- searchExpressionContext.getExpressionHints().add(SearchExpressionHint.RESOLVE_COMPONENT_LIST);
-
- //Step 1: find base
- // Case ':' (root)
- char separatorChar = facesContext.getNamingContainerSeparatorChar();
- if (topExpression.charAt(0) == separatorChar)
- {
- UIComponent findBase;
- findBase = SearchComponentUtils.getRootComponent(currentBase);
- return facesContext.getApplication().getSearchExpressionHandler().findComponentFromExpression(
- searchExpressionContext, findBase, topExpression.substring(1));
- }
-
- //Step 2: Once you have a base where you can start, apply an expression
- if (topExpression.charAt(0) == KEYWORD_PREFIX.charAt(0))
- {
- // A keyword means apply a command over the current source using an expression and the result must be
- // feedback into the algorithm.
- final UIComponent base = currentBase;
-
- String command = extractKeyword(topExpression, 1, separatorChar);
- final String remaining =
- command.length()+1 < topExpression.length() ?
- topExpression.substring(1+command.length()+1) : null;
-
- 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
- if (remaining != null)
- {
- List<UIComponent> resp = this.applyKeyword(searchExpressionContext, base, command);
- if (resp != null)
- {
- for (UIComponent target : resp)
- {
- List<UIComponent> list = currentInstance.findComponentFromExpression(
- searchExpressionContext, target, remaining);
- if (list != null)
- {
- if (responseList == null)
- {
- responseList = list;
- }
- else
- {
- responseList.addAll(list);
- }
- }
- }
- }
- }
- else
- {
- List<UIComponent> resp = this.applyKeyword(searchExpressionContext, base, command);
- if (resp != null)
- {
- if (responseList == null)
- {
- responseList = resp;
- }
- else
- {
- responseList.addAll(resp);
- }
- }
- }
- }
- else
- {
-
- //Split expression into tokens and apply loop
- String nextExpression = null;
- String expression;
- if (topExpression.indexOf(":@") > 0)
- {
- int idx = topExpression.indexOf(":@");
- nextExpression = topExpression.substring(idx+1);
- expression = topExpression.substring(0,idx);
- }
- else
- {
- expression = topExpression;
- }
-
- // Use findComponent(...) passing the expression provided
- UIComponent target = currentBase.findComponent(expression);
- if (target == null)
- {
- // If no component is found ...
- // First try to find the base component.
-
- // Extract the base id from the expression string
- int idx = expression.indexOf(separatorChar);
- String base = idx > 0 ? expression.substring(0, idx) : expression;
-
- // From the context component clientId, check if the base is part of the clientId
- String contextClientId = currentBase.getClientId(facesContext);
- int startCommon = contextClientId.lastIndexOf(base+facesContext.getNamingContainerSeparatorChar());
- if (startCommon >= 0
- && (startCommon == 0 || contextClientId.charAt(startCommon-1) == separatorChar )
- && (startCommon+base.length() <= contextClientId.length()-1 ||
- contextClientId.charAt(startCommon+base.length()+1) == separatorChar ))
- {
- // If there is a match, try to find a the first parent component whose id is equals to
- // the base id
- UIComponent parent = currentBase;
- while (parent != null )
- {
- if (base.equals(parent.getId()) && parent instanceof NamingContainer)
- {
- break;
- }
- else
- {
- parent = parent.getParent();
- }
- }
-
- // if a base component is found ...
- if (parent != null)
- {
- target = parent.findComponent(expression);
- /*
- if (target == null)
- {
- contextClientId = parent.getClientId(facesContext);
- // If no component is found,
- 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;
-
- parent.invokeOnComponent(facesContext, targetClientId, new ContextCallback(){
- public void invokeContextCallback(FacesContext context, UIComponent target)
- {
- currentHandler.invokeOnComponentFromExpression(
- searchExpressionContext, target, childExpression, topCallback);
- }
- });
- }
- else
- {
- parent.invokeOnComponent(facesContext, targetClientId, topCallback);
- }
- return;
- }*/
- }
- }
- }
- if (target != null)
- {
- currentBase = target;
- }
- if (currentBase != null)
- {
- if (responseList == null)
- {
- responseList = new ArrayList<UIComponent>();
- }
- responseList.add(currentBase);
- }
- }
- return responseList;
- }
-
- public List<UIComponent> applyKeyword(SearchExpressionContext searchExpressionContext, UIComponent last,
- String command)
- {
- Set<SearchExpressionHint> hints = searchExpressionContext.getExpressionHints();
- CollectComponentCallback callback = new CollectComponentCallback();
- searchExpressionContext.getFacesContext().getApplication().getSearchExpressionHandler().applyKeyword(
- searchExpressionContext, last, command, callback);
- return callback.getList();
- }
-
- private static class CollectComponentCallback implements ContextCallback
- {
- private List<UIComponent> list = null;
-
- @Override
- public void invokeContextCallback(FacesContext context, UIComponent target)
- {
- if (getList() == null)
- {
- list = new ArrayList<UIComponent>(2);
- }
- getList().add(target);
- }
-
- /**
- * @return the list
- */
- public List<UIComponent> getList()
- {
- return list;
- }
-
- }
}
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/ThisSearchExpressionResolver.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/ThisSearchExpressionResolver.java?rev=1771239&r1=1771238&r2=1771239&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/ThisSearchExpressionResolver.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/ThisSearchExpressionResolver.java Fri Nov 25 01:55:53 2016
@@ -47,13 +47,13 @@ public class ThisSearchExpressionResolve
}
@Override
- public boolean isPassthroughKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isPassthrough(SearchExpressionContext searchExpressionContext, String keyword)
{
return false;
}
@Override
- public boolean isLeafKeyword(SearchExpressionContext searchExpressionContext, String keyword)
+ public boolean isLeaf(SearchExpressionContext searchExpressionContext, String keyword)
{
return false;
}
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=1771239&r1=1771238&r2=1771239&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 Fri Nov 25 01:55:53 2016
@@ -21,8 +21,10 @@ package org.apache.myfaces.renderkit.htm
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import java.util.HashSet;
import java.util.List;
import java.util.RandomAccess;
+import java.util.Set;
import javax.faces.FacesException;
import javax.faces.component.ActionSource;
@@ -31,6 +33,8 @@ import javax.faces.component.UIComponent
import javax.faces.component.behavior.AjaxBehavior;
import javax.faces.component.behavior.ClientBehavior;
import javax.faces.component.behavior.ClientBehaviorContext;
+import javax.faces.component.search.SearchExpressionContext;
+import javax.faces.component.search.SearchExpressionHint;
import javax.faces.context.FacesContext;
import javax.faces.event.AjaxBehaviorEvent;
import javax.faces.event.PhaseId;
@@ -462,6 +466,7 @@ public class HtmlAjaxBehaviorRenderer ex
strVal = strVal.trim();
if (!EMPTY.equals(strVal))
{
+ /*
if (!strVal.startsWith(IDENTIFYER_MARKER))
{
String componentId = getComponentId(context, strVal);
@@ -470,7 +475,16 @@ public class HtmlAjaxBehaviorRenderer ex
else
{
retVal.append(strVal);
- }
+ }*/
+ Set<SearchExpressionHint> expressionHints = new HashSet<SearchExpressionHint>();
+ expressionHints.add(SearchExpressionHint.RESOLVE_CLIENT_ID);
+ expressionHints.add(SearchExpressionHint.EXECUTE_CLIENT_SIDE);
+ SearchExpressionContext searchExpressionContext =
+ SearchExpressionContext.createSearchExpressionContext(context.getFacesContext(),
+ context.getComponent(), expressionHints, null);
+ String clientId = context.getFacesContext().getApplication().getSearchExpressionHandler().resolveClientId(
+ searchExpressionContext, strVal);
+ retVal.append(clientId);
if (cnt < size)
{
retVal.append(BLANK);
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/AttachedObjectTargetImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/AttachedObjectTargetImpl.java?rev=1771239&r1=1771238&r2=1771239&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/AttachedObjectTargetImpl.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/AttachedObjectTargetImpl.java Fri Nov 25 01:55:53 2016
@@ -21,14 +21,16 @@ package org.apache.myfaces.view.facelets
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashSet;
import java.util.List;
-
+import java.util.Set;
import javax.el.ValueExpression;
+import javax.faces.component.ContextCallback;
import javax.faces.component.UIComponent;
import javax.faces.component.search.SearchExpressionContext;
+import javax.faces.component.search.SearchExpressionHint;
import javax.faces.context.FacesContext;
import javax.faces.view.AttachedObjectTarget;
-
import org.apache.myfaces.shared.util.StringUtils;
import org.apache.myfaces.view.facelets.tag.jsf.ComponentSupport;
@@ -68,39 +70,19 @@ public class AttachedObjectTargetImpl im
if (targetsArray.length > 0)
{
- List<UIComponent> targetsList = new ArrayList<UIComponent>(targetsArray.length);
- //final char separatorChar = facesContext.getNamingContainerSeparatorChar();
UIComponent facetBase = topLevelComponent.getFacet(UIComponent.COMPOSITE_FACET_NAME);
+
+ CollectComponentListCallback callback = new CollectComponentListCallback(targetsArray.length);
for (String target : targetsArray)
{
- //int separator = target.indexOf(separatorChar);
- //UIComponent innerComponent = null;
- List<UIComponent> resultList;
- //if (separator == -1)
- //{
- //innerComponent = ComponentSupport.findComponentChildOrFacetFrom(
- // facetBase, target, null);
- resultList = facesContext.getApplication().getSearchExpressionHandler().
- findComponentFromExpression(SearchExpressionContext.createSearchExpressionContext(
- facesContext, facetBase), facetBase, target);
- //}
- //else
- //{
- //innerComponent = ComponentSupport.findComponentChildOrFacetFrom(
- // facetBase, target.substring(0,separator), target);
- // resultList = facesContext.getApplication().getSearchExpressionHandler().
- // findComponentFromExpression(SearchExpressionContext.createSearchExpressionContext(
- // facesContext, facetBase), facetBase, target.substring(0,separator));
- //}
-
- //if (innerComponent != null)
- if (resultList != null)
- {
- targetsList.addAll(resultList);
- //targetsList.add(innerComponent);
- }
+ Set<SearchExpressionHint> expressionHints = new HashSet<SearchExpressionHint>(2);
+ expressionHints.add(SearchExpressionHint.RESOLVE_COMPONENT_LIST);
+ SearchExpressionContext searchContext = SearchExpressionContext.createSearchExpressionContext(
+ facesContext, facetBase, expressionHints, null);
+ facesContext.getApplication().getSearchExpressionHandler()
+ .resolveComponents(searchContext, target, callback);
}
- return targetsList;
+ return callback.getList();
}
else
{
@@ -143,4 +125,28 @@ public class AttachedObjectTargetImpl im
{
_targets = ve;
}
+
+ private static class CollectComponentListCallback implements ContextCallback
+ {
+ private List<UIComponent> list = null;
+
+ public CollectComponentListCallback(int size)
+ {
+ list = new ArrayList<UIComponent>(size);
+ }
+
+ @Override
+ public void invokeContextCallback(FacesContext context, UIComponent target)
+ {
+ getList().add(target);
+ }
+
+ /**
+ * @return the list
+ */
+ public List<UIComponent> getList()
+ {
+ return list;
+ }
+ }
}
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=1771239&r1=1771238&r2=1771239&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 Fri Nov 25 01:55:53 2016
@@ -304,7 +304,7 @@ public class SearchExpressionImplTest ex
Assert.assertFalse(handler.isPassthroughExpression(searchContext, "!whoNows"));
Set<SearchExpressionHint> expressionHints = new HashSet<SearchExpressionHint>();
- expressionHints.add(SearchExpressionHint.RESOLVE_AJAX);
+ expressionHints.add(SearchExpressionHint.EXECUTE_CLIENT_SIDE);
SearchExpressionContext searchContextWithAjaxResolve =
SearchExpressionContext.createSearchExpressionContext(facesContext, null, expressionHints, null);
Modified: myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/AbstractClientBehaviorTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/AbstractClientBehaviorTestCase.java?rev=1771239&r1=1771238&r2=1771239&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/AbstractClientBehaviorTestCase.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/AbstractClientBehaviorTestCase.java Fri Nov 25 01:55:53 2016
@@ -18,6 +18,7 @@
*/
package org.apache.myfaces.renderkit.html.behavior;
+import javax.faces.FactoryFinder;
import javax.faces.component.UIComponent;
import javax.faces.component.UIViewRoot;
import javax.faces.component.behavior.AjaxBehavior;
@@ -26,9 +27,8 @@ import javax.faces.context.ResponseWrite
import org.apache.myfaces.shared.renderkit.html.HtmlResponseWriterImpl;
import org.apache.myfaces.shared.util.FastWriter;
-import org.apache.myfaces.test.base.junit4.AbstractJsfTestCase;
import org.apache.myfaces.test.config.ConfigParser;
-import org.apache.myfaces.test.mock.MockFacesContext22;
+import org.apache.myfaces.view.facelets.FaceletTestCase;
import org.junit.Assert;
import org.junit.Test;
@@ -36,7 +36,7 @@ import org.junit.Test;
* @author Leonardo Uribe (latest modification by $Author$)
* @version $Revision$ $Date$
*/
-public abstract class AbstractClientBehaviorTestCase extends AbstractJsfTestCase
+public abstract class AbstractClientBehaviorTestCase extends FaceletTestCase
{
protected ResponseWriter writer;
protected FastWriter outputWriter;
@@ -47,6 +47,21 @@ public abstract class AbstractClientBeha
protected abstract HtmlRenderedClientEventAttr[] getClientBehaviorHtmlRenderedAttributes();
protected abstract UIComponent createComponentToTest();
+
+ @Override
+ protected void setFactories() throws Exception
+ {
+ super.setFactories();
+
+ FactoryFinder.setFactory(FactoryFinder.VIEW_DECLARATION_LANGUAGE_FACTORY,
+ "org.apache.myfaces.view.facelets.mock.MockViewDeclarationLanguageFactory");
+ FactoryFinder.setFactory(FactoryFinder.FACELET_CACHE_FACTORY,
+ "org.apache.myfaces.view.facelets.impl.FaceletCacheFactoryImpl");
+ FactoryFinder.setFactory(FactoryFinder.SEARCH_EXPRESSION_CONTEXT_FACTORY,
+ "org.apache.myfaces.component.search.SearchExpressionContextFactoryImpl");
+ FactoryFinder.setFactory(FactoryFinder.APPLICATION_FACTORY,
+ "org.apache.myfaces.application.ApplicationFactoryImpl");
+ }
@Override
protected void setUpJSFObjects() throws Exception
@@ -70,7 +85,8 @@ public abstract class AbstractClientBeha
super.setUpRenderKit();
parser = new ConfigParser();
parser.parse(parser.getPlatformURLs());
- //parser.parse(this.getClass().getResource("/META-INF/faces-config.xml"));
+ //parser.parse(this.getClass().getResource("/META-INF/faces-config.xml"));
+ request.setServletPath("/test");
}
/**
Modified: myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlOutcomeTargetButtonClientBehaviorRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlOutcomeTargetButtonClientBehaviorRendererTest.java?rev=1771239&r1=1771238&r2=1771239&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlOutcomeTargetButtonClientBehaviorRendererTest.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlOutcomeTargetButtonClientBehaviorRendererTest.java Fri Nov 25 01:55:53 2016
@@ -65,7 +65,9 @@ public class HtmlOutcomeTargetButtonClie
@Override
protected UIComponent createComponentToTest()
{
- return new HtmlOutcomeTargetButton();
+ HtmlOutcomeTargetButton button = new HtmlOutcomeTargetButton();
+ button.setOutcome("role");
+ return button;
}
@Override
Modified: myfaces/core/branches/2.3.x/impl/src/test/resources/org/apache/myfaces/component/search/search1.xhtml
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/test/resources/org/apache/myfaces/component/search/search1.xhtml?rev=1771239&r1=1771238&r2=1771239&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/test/resources/org/apache/myfaces/component/search/search1.xhtml (original)
+++ myfaces/core/branches/2.3.x/impl/src/test/resources/org/apache/myfaces/component/search/search1.xhtml Fri Nov 25 01:55:53 2016
@@ -29,7 +29,9 @@
<h:form id="mainForm">
<h:outputLabel id="labelName" for="name" value="Name: "/>
+ <div>
<h:inputText id="name" value="NAME"/>
+ </div>
<h:message id="msgName" for="name"/>
<h:outputText id="showName" value="showName"/>