Updated Branches: refs/heads/master 70d5addea -> 62a6f97ca
WICKET-4829 ComponentResolvers created in app init ignore markup's namespace Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/62a6f97c Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/62a6f97c Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/62a6f97c Branch: refs/heads/master Commit: 62a6f97ca913853194c535444b31e9a69a88e9d2 Parents: 41e4037 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Fri Nov 2 18:55:48 2012 +0200 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Fri Nov 2 18:55:48 2012 +0200 ---------------------------------------------------------------------- .../wicket/markup/html/form/AutoLabelResolver.java | 11 +++- .../markup/html/form/AutoLabelTagHandler.java | 1 + .../markup/html/form/AutoLabelTextResolver.java | 2 +- .../wicket/markup/parser/AbstractMarkupFilter.java | 42 +++++++++++++-- .../parser/filter/InlineEnclosureHandler.java | 2 +- .../parser/filter/RelativePathPrefixHandler.java | 8 ++-- .../parser/filter/WicketMessageTagHandler.java | 10 ++-- 7 files changed, 57 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/62a6f97c/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoLabelResolver.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoLabelResolver.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoLabelResolver.java index b41554b..562e6ed 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoLabelResolver.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoLabelResolver.java @@ -60,9 +60,9 @@ public class AutoLabelResolver implements IComponentResolver { private static final long serialVersionUID = 1L; - private static Logger logger = LoggerFactory.getLogger(AutoLabelResolver.class); + private static final Logger logger = LoggerFactory.getLogger(AutoLabelResolver.class); - static final String WICKET_FOR = "wicket:for"; + static final String WICKET_FOR = ":for"; @Override public Component resolve(final MarkupContainer container, final MarkupStream markupStream, @@ -73,7 +73,7 @@ public class AutoLabelResolver implements IComponentResolver return null; } - final String id = tag.getAttribute(WICKET_FOR).trim(); + final String id = tag.getAttribute(getWicketNamespace(markupStream) + WICKET_FOR).trim(); Component component = findRelatedComponent(container, id); if (component == null) @@ -102,6 +102,11 @@ public class AutoLabelResolver implements IComponentResolver return new AutoLabel("label" + container.getPage().getAutoIndex(), component); } + private String getWicketNamespace(MarkupStream markupStream) + { + return markupStream.getWicketNamespace(); + } + /** * * @param container http://git-wip-us.apache.org/repos/asf/wicket/blob/62a6f97c/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoLabelTagHandler.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoLabelTagHandler.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoLabelTagHandler.java index bf00b4f..17bdd82 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoLabelTagHandler.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoLabelTagHandler.java @@ -20,6 +20,7 @@ import java.text.ParseException; import org.apache.wicket.markup.ComponentTag; import org.apache.wicket.markup.MarkupElement; +import org.apache.wicket.markup.MarkupResourceStream; import org.apache.wicket.markup.WicketTag; import org.apache.wicket.markup.parser.AbstractMarkupFilter; import org.apache.wicket.util.string.Strings; http://git-wip-us.apache.org/repos/asf/wicket/blob/62a6f97c/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoLabelTextResolver.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoLabelTextResolver.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoLabelTextResolver.java index c49c7a0..0fe4ee9 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoLabelTextResolver.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoLabelTextResolver.java @@ -228,7 +228,7 @@ public class AutoLabelTextResolver implements IComponentResolver @Override public Component resolve(MarkupContainer container, MarkupStream markupStream, ComponentTag tag) { - if (tag instanceof WicketTag && "label".equals(((WicketTag)tag).getName())) + if (tag instanceof WicketTag && "label".equals(tag.getName())) { // We need to find a FormComponent... Component related = null; http://git-wip-us.apache.org/repos/asf/wicket/blob/62a6f97c/wicket-core/src/main/java/org/apache/wicket/markup/parser/AbstractMarkupFilter.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/parser/AbstractMarkupFilter.java b/wicket-core/src/main/java/org/apache/wicket/markup/parser/AbstractMarkupFilter.java index 111684b..2ce2fab 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/parser/AbstractMarkupFilter.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/parser/AbstractMarkupFilter.java @@ -24,6 +24,7 @@ import org.apache.wicket.markup.Markup; import org.apache.wicket.markup.MarkupElement; import org.apache.wicket.markup.MarkupParser; import org.apache.wicket.markup.MarkupResourceStream; +import org.apache.wicket.markup.MarkupStream; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -144,17 +145,48 @@ public abstract class AbstractMarkupFilter implements IMarkupFilter } /** + * Extracts the markup namespace from the MarkupResourceStream + * passed at creation time. + * + * <p> + * There are two versions of this method because most IMarkupFilter's + * have dual personality - {@link IMarkupFilter} (one instance per MarkupParser) + * and {@link org.apache.wicket.markup.resolver.IComponentResolver} (one + * instance per application). + * </p> + * * @return the namespace of the loaded markup */ protected String getWicketNamespace() { - String wicketNamespace; - if (markupResourceStream != null) + return getWicketNamespace(null); + } + + /** + * Extracts the markup namespace from the passed MarkupStream if available, + * or from the MarkupResourceStream passed at creation time. + * + * <p> + * There are two versions of this method because most IMarkupFilter's + * have dual personality - {@link IMarkupFilter} (one instance per MarkupParser) + * and {@link org.apache.wicket.markup.resolver.IComponentResolver} (one + * instance per application). + * </p> + * + * @param markupStream + * the markup stream + * @return namespace extracted from the markup + */ + protected String getWicketNamespace(final MarkupStream markupStream) + { + String wicketNamespace = MarkupParser.WICKET; + if (markupStream != null) { - wicketNamespace = markupResourceStream.getWicketNamespace(); + wicketNamespace = markupStream.getWicketNamespace(); } - else { - wicketNamespace = MarkupParser.WICKET; + else if (markupResourceStream != null) + { + wicketNamespace = markupResourceStream.getWicketNamespace(); } return wicketNamespace; } http://git-wip-us.apache.org/repos/asf/wicket/blob/62a6f97c/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/InlineEnclosureHandler.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/InlineEnclosureHandler.java b/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/InlineEnclosureHandler.java index 3ff7d96..76767b8 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/InlineEnclosureHandler.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/InlineEnclosureHandler.java @@ -185,7 +185,7 @@ public final class InlineEnclosureHandler extends AbstractMarkupFilter if (Strings.isEmpty(inlineEnclosureChildId) == false) { String id = tag.getId(); - if (id.startsWith(getWicketNamespace())) + if (id.startsWith(getWicketNamespace(markupStream))) { id = id + container.getPage().getAutoIndex(); } http://git-wip-us.apache.org/repos/asf/wicket/blob/62a6f97c/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/RelativePathPrefixHandler.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/RelativePathPrefixHandler.java b/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/RelativePathPrefixHandler.java index 0359200..0ae97ee 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/RelativePathPrefixHandler.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/RelativePathPrefixHandler.java @@ -141,7 +141,7 @@ public final class RelativePathPrefixHandler extends AbstractMarkupFilter { if (tag.getId() == null) { - tag.setId(getWicketRelativePathPrefix()); + tag.setId(getWicketRelativePathPrefix(null)); tag.setAutoComponentTag(true); } tag.addBehavior(RELATIVE_PATH_BEHAVIOR); @@ -157,7 +157,7 @@ public final class RelativePathPrefixHandler extends AbstractMarkupFilter public Component resolve(final MarkupContainer container, final MarkupStream markupStream, final ComponentTag tag) { - if ((tag != null) && (tag.getId().equals(getWicketRelativePathPrefix()))) + if ((tag != null) && (tag.getId().equals(getWicketRelativePathPrefix(markupStream)))) { String id = tag.getId() + container.getPage().getAutoIndex(); @@ -169,8 +169,8 @@ public final class RelativePathPrefixHandler extends AbstractMarkupFilter return null; } - private String getWicketRelativePathPrefix() + private String getWicketRelativePathPrefix(final MarkupStream markupStream) { - return getWicketNamespace() + WICKET_RELATIVE_PATH_PREFIX_CONTAINER_ID; + return getWicketNamespace(markupStream) + WICKET_RELATIVE_PATH_PREFIX_CONTAINER_ID; } } http://git-wip-us.apache.org/repos/asf/wicket/blob/62a6f97c/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/WicketMessageTagHandler.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/WicketMessageTagHandler.java b/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/WicketMessageTagHandler.java index 65aa1d1..85db394 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/WicketMessageTagHandler.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/WicketMessageTagHandler.java @@ -91,7 +91,7 @@ public final class WicketMessageTagHandler extends AbstractMarkupFilter // if this is a raw tag we need to set the id to something so // that wicket will not merge this as raw markup and instead // pass it on to a resolver - tag.setId(getWicketMessageIdPrefix()); + tag.setId(getWicketMessageIdPrefix(null)); tag.setAutoComponentTag(true); tag.setModified(true); } @@ -163,11 +163,11 @@ public final class WicketMessageTagHandler extends AbstractMarkupFilter public Component resolve(MarkupContainer container, MarkupStream markupStream, ComponentTag tag) { // localize any raw markup that has wicket:message attrs - if ((tag != null) && (tag.getId().startsWith(getWicketMessageIdPrefix()))) + if ((tag != null) && (tag.getId().startsWith(getWicketMessageIdPrefix(markupStream)))) { Component wc; int autoIndex = container.getPage().getAutoIndex(); - String id = getWicketMessageIdPrefix() + autoIndex; + String id = getWicketMessageIdPrefix(markupStream) + autoIndex; if (tag.isOpenClose()) { @@ -189,8 +189,8 @@ public final class WicketMessageTagHandler extends AbstractMarkupFilter return wicketNamespace + ':' + "message"; } - private String getWicketMessageIdPrefix() + private String getWicketMessageIdPrefix(final MarkupStream markupStream) { - return getWicketNamespace() + WICKET_MESSAGE_CONTAINER_ID; + return getWicketNamespace(markupStream) + WICKET_MESSAGE_CONTAINER_ID; } }
