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 &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/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);

Reply via email to