You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jd...@apache.org on 2010/07/04 18:51:00 UTC

svn commit: r960361 - in /wicket/trunk/wicket/src/main/java/org/apache/wicket: MarkupContainer.java markup/html/internal/Enclosure.java markup/resolver/ComponentResolvers.java

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);
+	}
 }