Author: mgrigorov
Date: Mon Oct 31 08:58:23 2011
New Revision: 1195377

URL: http://svn.apache.org/viewvc?rev=1195377&view=rev
Log:
WICKET-4172 Enclosure can't find a child with deeper path in 
TransparentWebMarkupContainer


Modified:
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/Enclosure.java

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/Enclosure.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/Enclosure.java?rev=1195377&r1=1195376&r2=1195377&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/Enclosure.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/Enclosure.java
 Mon Oct 31 08:58:23 2011
@@ -28,6 +28,7 @@ import org.apache.wicket.markup.parser.f
 import org.apache.wicket.markup.resolver.ComponentResolvers;
 import org.apache.wicket.markup.resolver.ComponentResolvers.ResolverFilter;
 import org.apache.wicket.markup.resolver.IComponentResolver;
+import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -171,7 +172,9 @@ public class Enclosure extends WebMarkup
        private Component getChildComponent(final MarkupStream markupStream,
                MarkupContainer enclosureParent)
        {
-               Component controller = enclosureParent.get(getChildId());
+               String fullChildId = getChildId();
+
+               Component controller = enclosureParent.get(fullChildId);
                if (controller == null)
                {
                        int orgIndex = markupStream.getCurrentIndex();
@@ -185,10 +188,15 @@ public class Enclosure extends WebMarkup
                                                ComponentTag tag = 
markupStream.getTag();
                                                if ((tag != null) && 
(tag.isOpen() || tag.isOpenClose()))
                                                {
-                                                       if 
(childId.equals(tag.getId()))
+                                                       String tagId = 
tag.getId();
+
+                                                       if 
(fullChildId.equals(tagId))
                                                        {
+                                                               ComponentTag 
fullComponentTag = new ComponentTag(tag);
+                                                               
fullComponentTag.setId(childId.toString());
+
                                                                controller = 
ComponentResolvers.resolve(enclosureParent,
-                                                                       
markupStream, tag, new ResolverFilter()
+                                                                       
markupStream, fullComponentTag, new ResolverFilter()
                                                                        {
                                                                                
public boolean ignoreResolver(
                                                                                
        final IComponentResolver resolver)
@@ -198,6 +206,10 @@ public class Enclosure extends WebMarkup
                                                                        });
                                                                break;
                                                        }
+                                                       else if 
(fullChildId.startsWith(tagId + PATH_SEPARATOR))
+                                                       {
+                                                               fullChildId = 
Strings.afterFirst(fullChildId, PATH_SEPARATOR);
+                                                       }
                                                }
                                        }
                                }


Reply via email to