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 2017/12/09 19:09:11 UTC

svn commit: r1817652 - in /myfaces/core/branches/2.3.x/impl/src: main/java/org/apache/myfaces/component/search/ test/java/org/apache/myfaces/component/search/ test/resources/org/apache/myfaces/component/search/

Author: tandraschko
Date: Sat Dec  9 19:09:10 2017
New Revision: 1817652

URL: http://svn.apache.org/viewvc?rev=1817652&view=rev
Log:
MYFACES-4176 Search expression fails to resolve component outside of form

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
    myfaces/core/branches/2.3.x/impl/src/test/resources/org/apache/myfaces/component/search/search1.xhtml

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=1817652&r1=1817651&r2=1817652&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 Sat Dec  9 19:09:10 2017
@@ -428,6 +428,8 @@ public class SearchExpressionHandlerImpl
                 // Command completed, apply parent callback
                 this.applyKeyword(searchExpressionContext, previous, command, null, parentCallback);
             }
+            
+            return;
         }
         else
         {
@@ -439,7 +441,7 @@ public class SearchExpressionHandlerImpl
             {
                 int idx = topExpression.indexOf(":@");
                 nextExpression = topExpression.substring(idx+1);
-                expression = topExpression.substring(0,idx);
+                expression = topExpression.substring(0, idx);
             }
             else
             {
@@ -529,9 +531,14 @@ public class SearchExpressionHandlerImpl
 
                 return;
             }
-
-            topCallback.invokeContextCallback(facesContext, previous);
         }
+        
+        // still no component found - lets try a invokeComponent as last fallback (see MYFACES-4176)
+        String clientId = topExpression;
+        if (clientId.charAt(0) == separatorChar) {
+            clientId = clientId.substring(1);
+        }
+        facesContext.getViewRoot().invokeOnComponent(facesContext, clientId, topCallback);
     }
 
     // take the command and resolve it using the chain of responsibility pattern.
@@ -562,8 +569,6 @@ public class SearchExpressionHandlerImpl
         char separatorChar = facesContext.getNamingContainerSeparatorChar();
         if (topExpression.charAt(0) == separatorChar)
         {
-            //return facesContext.getApplication().getSearchExpressionHandler().isPassthroughExpression(
-            //        searchExpressionContext, topExpression.substring(1));
             // only keywords are passthrough expressions.
             return false;
         }

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=1817652&r1=1817651&r2=1817652&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 Sat Dec  9 19:09:10 2017
@@ -117,6 +117,10 @@ public class SearchExpressionImplTest ex
         componentId = facesContext.getApplication().getSearchExpressionHandler().resolveClientIds(
                 searchContext, "@parent:@id(msgName)").get(0);
         Assert.assertEquals(componentId, "mainForm:msgName");
+
+        componentId = facesContext.getApplication().getSearchExpressionHandler().resolveClientIds(
+                searchContext, "topLevelOutputText").get(0);
+        Assert.assertEquals(componentId, "topLevelOutputText");
         
         facesContext.getViewRoot().invokeOnComponent(facesContext, "mainForm:table:3:nested:1:nestedButton", 
                 new ContextCallback()

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=1817652&r1=1817651&r2=1817652&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 Sat Dec  9 19:09:10 2017
@@ -25,6 +25,9 @@
 <h:head>
 </h:head>
 <h:body>
+    
+    <h:outputText id="topLevelOutputText" value="test" />
+    
     <h:panelGrid id="panelGridId" columns="1">
         <h:form id="mainForm">