Author: jdonnerstag
Date: Sun Jul  4 16:51:00 2010
New Revision: 960361

URL: http://svn.apache.org/viewvc?rev=960361&view=rev
Log:
fixed WICKET-2485: issue fixed in 1.5 
Issue: WICKET-2485

Modified:
    wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/internal/Enclosure.java
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/ComponentResolvers.java

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java?rev=960361&r1=960360&r2=960361&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java 
(original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java 
Sun Jul  4 16:51:00 2010
@@ -1446,7 +1446,7 @@ public abstract class MarkupContainer ex
                        Component component = get(id);
                        if (component == null)
                        {
-                               component = ComponentResolvers.resolve(this, 
markupStream, tag);
+                               component = ComponentResolvers.resolve(this, 
markupStream, tag, null);
                                if ((component != null) && 
(component.getParent() == null))
                                {
                                        autoAdd(component, markupStream);
@@ -2003,7 +2003,7 @@ public abstract class MarkupContainer ex
                                {
                                        if (tag instanceof WicketTag)
                                        {
-                                               Component component = 
ComponentResolvers.resolve(this, stream, tag);
+                                               Component component = 
ComponentResolvers.resolve(this, stream, tag, null);
                                                if ((component != null) && 
(component.getParent() == null))
                                                {
                                                        if 
(component.getId().equals(tag.getId()) == false)

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/internal/Enclosure.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/internal/Enclosure.java?rev=960361&r1=960360&r2=960361&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/internal/Enclosure.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/internal/Enclosure.java
 Sun Jul  4 16:51:00 2010
@@ -31,6 +31,7 @@ import org.apache.wicket.markup.html.for
 import org.apache.wicket.markup.parser.filter.EnclosureHandler;
 import org.apache.wicket.markup.resolver.ComponentResolvers;
 import org.apache.wicket.markup.resolver.IComponentResolver;
+import org.apache.wicket.markup.resolver.ComponentResolvers.ResolverFilter;
 import org.apache.wicket.request.Response;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.response.NullResponse;
@@ -224,8 +225,15 @@ public class Enclosure extends WebMarkup
                                                {
                                                        if 
(childId.equals(tag.getId()))
                                                        {
-                                                               controller = 
ComponentResolvers.resolveByComponentHierarchy(
-                                                                       
container, markupStream, tag);
+                                                               controller = 
ComponentResolvers.resolve(container, markupStream,
+                                                                       tag, 
new ResolverFilter()
+                                                                       {
+                                                                               
public boolean ignoreResolver(
+                                                                               
        final IComponentResolver resolver)
+                                                                               
{
+                                                                               
        return resolver instanceof EnclosureHandler;
+                                                                               
}
+                                                                       });
                                                                break;
                                                        }
                                                }

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/ComponentResolvers.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/ComponentResolvers.java?rev=960361&r1=960360&r2=960361&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/ComponentResolvers.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/ComponentResolvers.java
 Sun Jul  4 16:51:00 2010
@@ -44,10 +44,11 @@ public class ComponentResolvers
         * @param container
         * @param markupStream
         * @param tag
+        * @param filter
         * @return <code>null</code> if a component was could not be found
         */
        public static Component resolve(final MarkupContainer container,
-               final MarkupStream markupStream, final ComponentTag tag)
+               final MarkupStream markupStream, final ComponentTag tag, final 
ResolverFilter filter)
        {
                // try to resolve using component hierarchy
                Component component = resolveByComponentHierarchy(container, 
markupStream, tag);
@@ -55,7 +56,7 @@ public class ComponentResolvers
                if (component == null)
                {
                        // fallback to application-level resolvers
-                       component = resolveByApplication(container, 
markupStream, tag);
+                       component = resolveByApplication(container, 
markupStream, tag, filter);
                }
 
                return component;
@@ -67,19 +68,23 @@ public class ComponentResolvers
         * @param container
         * @param markupStream
         * @param tag
+        * @param filter
         * @return Null, if no component was found
         */
-       public static Component resolveByApplication(final MarkupContainer 
container,
-               final MarkupStream markupStream, final ComponentTag tag)
+       private static Component resolveByApplication(final MarkupContainer 
container,
+               final MarkupStream markupStream, final ComponentTag tag, final 
ResolverFilter filter)
        {
                for (final IComponentResolver resolver : Application.get()
                        .getPageSettings()
                        .getComponentResolvers())
                {
-                       Component component = resolver.resolve(container, 
markupStream, tag);
-                       if (component != null)
+                       if ((filter == null) || 
(filter.ignoreResolver(resolver) == false))
                        {
-                               return component;
+                               Component component = 
resolver.resolve(container, markupStream, tag);
+                               if (component != null)
+                               {
+                                       return component;
+                               }
                        }
                }
 
@@ -94,7 +99,7 @@ public class ComponentResolvers
         * @param tag
         * @return Null, if no component was found
         */
-       public static Component resolveByComponentHierarchy(final 
MarkupContainer container,
+       private static Component resolveByComponentHierarchy(final 
MarkupContainer container,
                final MarkupStream markupStream, final ComponentTag tag)
        {
                Component cursor = container;
@@ -114,4 +119,17 @@ public class ComponentResolvers
 
                return null;
        }
+
+       /**
+        * 
+        */
+       public interface ResolverFilter
+       {
+               /**
+                * 
+                * @param resolver
+                * @return true, if resolvers should be skipped
+                */
+               boolean ignoreResolver(IComponentResolver resolver);
+       }
 }


Reply via email to