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