You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@wicket.apache.org by Andrea Del Bene <an...@gmail.com> on 2015/08/14 10:13:47 UTC
WICKET-5965 Queuing a component in head
Hi,
for the issue in the subject I think we should use an IAutoComponentFactory
for header sections to dequeue it inside
MarkupContainer#dequeueAutoComponents.
This change is quite small and involves just HtmlHeaderSectionHandler (see
the diff at he bottom). I've tested it with Wicket Examples (mostly with
AJAX example) and everything is ok, but I want to know if any of you is
concerned about it.
Here it is:
diff --git
a/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/HtmlHeaderSectionHandler.java
b/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/HtmlHeaderSectionHandler.java
index 0ea0002..5b79f80 100644
---
a/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/HtmlHeaderSectionHandler.java
+++
b/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/HtmlHeaderSectionHandler.java
@@ -18,11 +18,16 @@
import java.text.ParseException;
+import org.apache.wicket.Component;
+import org.apache.wicket.MarkupContainer;
import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.ComponentTag.IAutoComponentFactory;
import org.apache.wicket.markup.Markup;
import org.apache.wicket.markup.MarkupElement;
import org.apache.wicket.markup.MarkupException;
import org.apache.wicket.markup.MarkupStream;
+import org.apache.wicket.markup.html.internal.HtmlHeaderContainer;
+import org.apache.wicket.markup.html.internal.HtmlHeaderItemsContainer;
import org.apache.wicket.markup.parser.AbstractMarkupFilter;
import org.apache.wicket.markup.parser.XmlTag.TagType;
import org.apache.wicket.markup.resolver.HtmlHeaderResolver;
@@ -72,6 +77,24 @@
/** The Markup available so far for the resource */
private final Markup markup;
+ private static final IAutoComponentFactory HTML_HEADER_FACTORY = new
IAutoComponentFactory()
+ {
+ @Override
+ public Component newComponent(MarkupContainer container,
ComponentTag tag)
+ {
+ return new HtmlHeaderContainer(tag.getId());
+ }
+ };
+
+ private static final IAutoComponentFactory HTML_HEADER_ITEMS_FACTORY =
new IAutoComponentFactory()
+ {
+ @Override
+ public Component newComponent(MarkupContainer container,
ComponentTag tag)
+ {
+ return new HtmlHeaderItemsContainer(tag.getId());
+ }
+ };
+
/**
* Construct.
*
@@ -164,6 +187,7 @@
tag.setId(HEADER_ID);
tag.setAutoComponentTag(true);
tag.setModified(true);
+ tag.setAutoComponentFactory(HTML_HEADER_ITEMS_FACTORY);
}
/**
@@ -188,6 +212,7 @@
tag.setId(HEADER_ID);
tag.setAutoComponentTag(true);
tag.setModified(true);
+ tag.setAutoComponentFactory(HTML_HEADER_FACTORY);
}
}
else if (tag.isClose())
@@ -201,6 +226,7 @@
headOpenTag.setAutoComponentTag(false);
headOpenTag.setModified(false);
headOpenTag.setFlag(ComponentTag.RENDER_RAW, true);
+ headOpenTag.setAutoComponentFactory(null);
}
foundClosingHead = true;
@@ -217,6 +243,7 @@
openTag.setId(HEADER_ID);
openTag.setAutoComponentTag(true);
openTag.setModified(true);
+ openTag.setAutoComponentFactory(HTML_HEADER_FACTORY);
final ComponentTag closeTag = new ComponentTag(HEAD,
TagType.CLOSE);
closeTag.setOpenTag(openTag);
Re: WICKET-5965 Queuing a component in head
Posted by Martin Grigorov <mg...@apache.org>.
+1 if all tests pass
Please add a new test case out of the attached quickstart in the ticket so
it won't regress in the future.
Thanks Andrea!
Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov
On Fri, Aug 14, 2015 at 11:13 AM, Andrea Del Bene <an...@gmail.com>
wrote:
> Hi,
>
> for the issue in the subject I think we should use an IAutoComponentFactory
> for header sections to dequeue it inside
> MarkupContainer#dequeueAutoComponents.
> This change is quite small and involves just HtmlHeaderSectionHandler (see
> the diff at he bottom). I've tested it with Wicket Examples (mostly with
> AJAX example) and everything is ok, but I want to know if any of you is
> concerned about it.
>
> Here it is:
>
>
>
> diff --git
>
> a/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/HtmlHeaderSectionHandler.java
>
> b/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/HtmlHeaderSectionHandler.java
> index 0ea0002..5b79f80 100644
> ---
>
> a/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/HtmlHeaderSectionHandler.java
> +++
>
> b/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/HtmlHeaderSectionHandler.java
> @@ -18,11 +18,16 @@
>
> import java.text.ParseException;
>
> +import org.apache.wicket.Component;
> +import org.apache.wicket.MarkupContainer;
> import org.apache.wicket.markup.ComponentTag;
> +import org.apache.wicket.markup.ComponentTag.IAutoComponentFactory;
> import org.apache.wicket.markup.Markup;
> import org.apache.wicket.markup.MarkupElement;
> import org.apache.wicket.markup.MarkupException;
> import org.apache.wicket.markup.MarkupStream;
> +import org.apache.wicket.markup.html.internal.HtmlHeaderContainer;
> +import org.apache.wicket.markup.html.internal.HtmlHeaderItemsContainer;
> import org.apache.wicket.markup.parser.AbstractMarkupFilter;
> import org.apache.wicket.markup.parser.XmlTag.TagType;
> import org.apache.wicket.markup.resolver.HtmlHeaderResolver;
> @@ -72,6 +77,24 @@
> /** The Markup available so far for the resource */
> private final Markup markup;
>
> + private static final IAutoComponentFactory HTML_HEADER_FACTORY = new
> IAutoComponentFactory()
> + {
> + @Override
> + public Component newComponent(MarkupContainer container,
> ComponentTag tag)
> + {
> + return new HtmlHeaderContainer(tag.getId());
> + }
> + };
> +
> + private static final IAutoComponentFactory HTML_HEADER_ITEMS_FACTORY =
> new IAutoComponentFactory()
> + {
> + @Override
> + public Component newComponent(MarkupContainer container,
> ComponentTag tag)
> + {
> + return new HtmlHeaderItemsContainer(tag.getId());
> + }
> + };
> +
> /**
> * Construct.
> *
> @@ -164,6 +187,7 @@
> tag.setId(HEADER_ID);
> tag.setAutoComponentTag(true);
> tag.setModified(true);
> + tag.setAutoComponentFactory(HTML_HEADER_ITEMS_FACTORY);
> }
>
> /**
> @@ -188,6 +212,7 @@
> tag.setId(HEADER_ID);
> tag.setAutoComponentTag(true);
> tag.setModified(true);
> + tag.setAutoComponentFactory(HTML_HEADER_FACTORY);
> }
> }
> else if (tag.isClose())
> @@ -201,6 +226,7 @@
> headOpenTag.setAutoComponentTag(false);
> headOpenTag.setModified(false);
> headOpenTag.setFlag(ComponentTag.RENDER_RAW, true);
> + headOpenTag.setAutoComponentFactory(null);
> }
>
> foundClosingHead = true;
> @@ -217,6 +243,7 @@
> openTag.setId(HEADER_ID);
> openTag.setAutoComponentTag(true);
> openTag.setModified(true);
> + openTag.setAutoComponentFactory(HTML_HEADER_FACTORY);
>
> final ComponentTag closeTag = new ComponentTag(HEAD,
> TagType.CLOSE);
> closeTag.setOpenTag(openTag);
>