Updated Branches: refs/heads/wicket-6.x 7ff757117 -> 64f5e1d0e
WICKET-5166 Relax the requirements for using FilteringHeaderResponse Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/64f5e1d0 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/64f5e1d0 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/64f5e1d0 Branch: refs/heads/wicket-6.x Commit: 64f5e1d0e7760aa99b30b21218fa1587a0721e1f Parents: 7ff7571 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Tue Apr 30 21:23:11 2013 +0200 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Tue Apr 30 21:26:41 2013 +0200 ---------------------------------------------------------------------- .../head/filter/FilteringHeaderResponse.java | 45 ++++++++++++-- ...JavaScriptFilteredIntoFooterHeaderResponse.java | 5 +- 2 files changed, 41 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/64f5e1d0/wicket-core/src/main/java/org/apache/wicket/markup/head/filter/FilteringHeaderResponse.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/head/filter/FilteringHeaderResponse.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/filter/FilteringHeaderResponse.java index 546eb5e..f19226b 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/head/filter/FilteringHeaderResponse.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/filter/FilteringHeaderResponse.java @@ -17,6 +17,7 @@ package org.apache.wicket.markup.head.filter; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -52,6 +53,12 @@ public class FilteringHeaderResponse extends DecoratingHeaderResponse private static final Logger log = LoggerFactory.getLogger(FilteringHeaderResponse.class); /** + * The default name of the filter that will collect contributions which should be rendered + * in the page's <head> + */ + public static final String DEFAULT_HEADER_FILTER_NAME = "wicket-default-header-filter"; + + /** * A filter used to bucket your resources, inline scripts, etc, into different responses. The * bucketed resources are then rendered by a {@link HeaderResponseContainer}, using the name of * the filter to get the correct bucket. @@ -90,6 +97,21 @@ public class FilteringHeaderResponse extends DecoratingHeaderResponse private final String headerFilterName; /** + * Constructor without explicit filters. + * + * Generates filters automatically for any FilteredHeaderItem. + * Any other contribution is rendered in the page's <head> + * + * @param response + * the wrapped IHeaderResponse + * @see HeaderResponseContainer + */ + public FilteringHeaderResponse(IHeaderResponse response) + { + this(response, DEFAULT_HEADER_FILTER_NAME, Collections.<IHeaderResponseFilter>emptyList()); + } + + /** * Construct. * * @param response @@ -162,17 +184,26 @@ public class FilteringHeaderResponse extends DecoratingHeaderResponse } else { - for (IHeaderResponseFilter filter : filters) + if (filters != null) { - if (filter.accepts(item)) + for (IHeaderResponseFilter filter : filters) { - render(item, filter.getName()); - return; + if (filter.accepts(item)) + { + render(item, filter.getName()); + return; + } } } - log.warn( - "A HeaderItem '{}' was rendered to the filtering header response, but did not match any filters, so it was effectively lost. Make sure that you have filters that accept every possible case or else configure a default filter that returns true to all acceptance tests", - item); + + // none of the configured filters accepted it so put it in the header + if (responseFilterMap.containsKey(headerFilterName) == false) + { + responseFilterMap.put(headerFilterName, new ArrayList<HeaderItem>()); + } + render(item, headerFilterName); + log.debug("A HeaderItem '{}' was rendered to the filtering header response, but did not match any filters, so it put in the <head>.", + item); } } http://git-wip-us.apache.org/repos/asf/wicket/blob/64f5e1d0/wicket-core/src/main/java/org/apache/wicket/markup/head/filter/JavaScriptFilteredIntoFooterHeaderResponse.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/head/filter/JavaScriptFilteredIntoFooterHeaderResponse.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/filter/JavaScriptFilteredIntoFooterHeaderResponse.java index f7b8e37..45c6e37 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/head/filter/JavaScriptFilteredIntoFooterHeaderResponse.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/filter/JavaScriptFilteredIntoFooterHeaderResponse.java @@ -17,6 +17,7 @@ package org.apache.wicket.markup.head.filter; import java.util.Arrays; +import java.util.Collections; import org.apache.wicket.markup.head.IHeaderResponse; @@ -47,13 +48,13 @@ public final class JavaScriptFilteredIntoFooterHeaderResponse extends FilteringH public JavaScriptFilteredIntoFooterHeaderResponse(IHeaderResponse response, String footerBucketName) { - super(response, HEADER_FILTER_NAME, null); + super(response, HEADER_FILTER_NAME, Collections.<IHeaderResponseFilter>emptyList()); setFilters(createFilters(footerBucketName)); } + // TODO: make this method private in Wicket 7 protected Iterable<? extends IHeaderResponseFilter> createFilters(String footerBucketName) { - // TODO: make private method in wicket 7.x IHeaderResponseFilter footer = createFooterFilter(footerBucketName); IHeaderResponseFilter header = createHeaderFilter(HEADER_FILTER_NAME, footer); return Arrays.asList(header, footer);
