Author: pete
Date: Tue Sep  6 15:59:12 2011
New Revision: 1165734

URL: http://svn.apache.org/viewvc?rev=1165734&view=rev
Log:
WICKET-4032 ComponentStringResourceLoader must not include repeater items in 
resource lookup

Modified:
    
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/resource/loader/ComponentStringResourceLoader.java

Modified: 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/resource/loader/ComponentStringResourceLoader.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/resource/loader/ComponentStringResourceLoader.java?rev=1165734&r1=1165733&r2=1165734&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/resource/loader/ComponentStringResourceLoader.java
 (original)
+++ 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/resource/loader/ComponentStringResourceLoader.java
 Tue Sep  6 15:59:12 2011
@@ -27,7 +27,6 @@ import org.apache.wicket.Page;
 import org.apache.wicket.markup.html.WebComponent;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.WebPage;
-import org.apache.wicket.markup.html.list.Loop;
 import org.apache.wicket.markup.repeater.AbstractRepeater;
 import org.apache.wicket.resource.IPropertiesFactory;
 import org.apache.wicket.resource.Properties;
@@ -231,7 +230,7 @@ public class ComponentStringResourceLoad
 
                // The reason why we need to create that stack is because we 
need to
                // walk it downwards starting with Page down to the Component
-               List<Class<?>> searchStack = getComponentStack(component);
+               List<Class<?>> searchStack = 
getResourceLookupComponentStack(component);
 
                // TODO Should be changed to false in 1.5
                final boolean old = true;
@@ -277,6 +276,23 @@ public class ComponentStringResourceLoad
        }
 
        /**
+        * return if component should be part of resource lookup
+        * 
+        * @param component 
+        *           component to check
+        * @return <code>true</code> if component is relevant for resource 
lookup path
+        */
+       protected boolean useForResourcePath(Component component)
+       {
+               if (component == null)
+               {
+                       throw new IllegalArgumentException("component must not 
be null");
+               }
+
+               return component.getParent() instanceof AbstractRepeater == 
false;
+       }
+
+       /**
         * get path for resource lookup
         * 
         * @param component
@@ -295,9 +311,7 @@ public class ComponentStringResourceLoad
                
                while (current.getParent() != null)
                {
-                       final boolean skip = current.getParent() instanceof 
AbstractRepeater;
-
-                       if (skip == false)
+                       if (useForResourcePath(current))
                        {
                                if (buffer.length() > 0)
                                {
@@ -318,7 +332,7 @@ public class ComponentStringResourceLoad
         *            The component to evaluate
         * @return The stack of classes
         */
-       private List<Class<?>> getComponentStack(final Component component)
+       private List<Class<?>> getResourceLookupComponentStack(final Component 
component)
        {
                // Build the search stack
                final List<Class<?>> searchStack = new ArrayList<Class<?>>();
@@ -328,14 +342,22 @@ public class ComponentStringResourceLoad
                {
                        // Add all the component on the way to the Page
                        MarkupContainer container = component.getParent();
+                       
                        while (container != null)
                        {
-                               searchStack.add(container.getClass());
+                               // add all relevant classes for resource lookup 
+                               if (useForResourcePath(container))
+                               {
+                                       searchStack.add(container.getClass());
+                               }
+
+                               // stop when reaching page class
                                if (container instanceof Page)
                                {
                                        break;
                                }
 
+                               // go up in component hierarchy
                                container = container.getParent();
                        }
                }


Reply via email to