You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2013/05/02 16:01:39 UTC

[08/15] git commit: WICKET-5166 Relax the requirements for using FilteringHeaderResponse

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/60abd1c4
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/60abd1c4
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/60abd1c4

Branch: refs/heads/master
Commit: 60abd1c44416838245a7f6e174059913502e5e60
Parents: 612c503
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue Apr 30 21:23:11 2013 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Thu May 2 15:56:46 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/60abd1c4/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 &lt;head&gt;
+	 */
+	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 &lt;head&gt;
+	 *
+	 * @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/60abd1c4/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);