Updated Branches:
refs/heads/wicket-1.5.x 52c174a26 -> cf33db490
WICKET-4330
Non standard ("wicket") namespace causes incorrect relative URL in certain cases
Consolidate the resolving of the markup namespace in all IMarkupFilter impls
which need it.
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/cf33db49
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/cf33db49
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/cf33db49
Branch: refs/heads/wicket-1.5.x
Commit: cf33db490e40f0b8c891b0571cedcd6b7a0e9a6f
Parents: 3261688
Author: martin-g <[email protected]>
Authored: Wed Jan 11 14:55:28 2012 +0200
Committer: martin-g <[email protected]>
Committed: Wed Jan 11 14:57:36 2012 +0200
----------------------------------------------------------------------
.../org/apache/wicket/markup/MarkupParser.java | 2 +-
.../wicket/markup/parser/AbstractMarkupFilter.java | 32 ++++++++++
.../parser/filter/RelativePathPrefixHandler.java | 18 +-----
.../parser/filter/WicketMessageTagHandler.java | 46 ++++++++++++---
.../parser/filter/WicketNamespaceHandler.java | 7 +--
.../markup/parser/filter/WicketTagIdentifier.java | 7 +--
.../markup/resolver/WicketMessageResolver.java | 1 -
.../markup/html/link/HrefExpectedResult_2.html | 4 +-
8 files changed, 78 insertions(+), 39 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/cf33db49/wicket-core/src/main/java/org/apache/wicket/markup/MarkupParser.java
----------------------------------------------------------------------
diff --git
a/wicket-core/src/main/java/org/apache/wicket/markup/MarkupParser.java
b/wicket-core/src/main/java/org/apache/wicket/markup/MarkupParser.java
index 429e0d1..904426d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/MarkupParser.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/MarkupParser.java
@@ -156,7 +156,7 @@ public class MarkupParser extends AbstractMarkupParser
final ContainerInfo containerInfo =
markupResourceStream.getContainerInfo();
if (containerInfo != null)
{
- filters.add(new WicketMessageTagHandler());
+ filters.add(new
WicketMessageTagHandler(markupResourceStream));
// Pages require additional handlers
if
(Page.class.isAssignableFrom(containerInfo.getContainerClass()))
http://git-wip-us.apache.org/repos/asf/wicket/blob/cf33db49/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 985cc4a..d06fc75 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
@@ -22,6 +22,8 @@ import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.HtmlSpecialTag;
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.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -37,6 +39,9 @@ public abstract class AbstractMarkupFilter implements
IMarkupFilter
/** Log. */
private static final Logger log =
LoggerFactory.getLogger(AbstractMarkupFilter.class);
+ /** The markup created by reading the markup file */
+ private final MarkupResourceStream markupResourceStream;
+
/** The next MarkupFilter in the chain */
private IMarkupFilter parent;
@@ -45,8 +50,15 @@ public abstract class AbstractMarkupFilter implements
IMarkupFilter
*/
public AbstractMarkupFilter()
{
+ this(null);
+ }
+
+ public AbstractMarkupFilter(final MarkupResourceStream
markupResourceStream)
+ {
+ this.markupResourceStream = markupResourceStream;
}
+
/**
* @return The next MarkupFilter in the chain
*/
@@ -140,4 +152,24 @@ public abstract class AbstractMarkupFilter implements
IMarkupFilter
public void postProcess(final Markup markup)
{
}
+
+ protected MarkupResourceStream getMarkupResourceStream() {
+ return markupResourceStream;
+ }
+
+ /**
+ * @return the namespace of the loaded markup
+ */
+ protected String getWicketNamespace()
+ {
+ String wicketNamespace;
+ if (markupResourceStream != null)
+ {
+ wicketNamespace =
markupResourceStream.getWicketNamespace();
+ }
+ else {
+ wicketNamespace = MarkupParser.WICKET;
+ }
+ return wicketNamespace;
+ }
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/cf33db49/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 ba7029f..640a9e1 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
@@ -97,9 +97,6 @@ public final class RelativePathPrefixHandler extends
AbstractMarkupFilter
}
};
- /** The markup created by reading the markup file */
- private final MarkupResourceStream markup;
-
/**
* Constructor for the IComponentResolver role.
*/
@@ -115,7 +112,7 @@ public final class RelativePathPrefixHandler extends
AbstractMarkupFilter
*/
public RelativePathPrefixHandler(final MarkupResourceStream markup)
{
- this.markup = markup;
+ super(markup);
}
@Override
@@ -172,17 +169,4 @@ public final class RelativePathPrefixHandler extends
AbstractMarkupFilter
}
return null;
}
-
- private String getWicketNamespace()
- {
- String wicketNamespace;
- if (markup != null)
- {
- wicketNamespace = markup.getWicketNamespace();
- }
- else {
- wicketNamespace = MarkupParser.WICKET;
- }
- return wicketNamespace;
- }
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/cf33db49/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 c6dfaa0..3f79e24 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
@@ -24,6 +24,8 @@ import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.behavior.Behavior;
import org.apache.wicket.markup.ComponentTag;
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.apache.wicket.markup.html.TransparentWebMarkupContainer;
import org.apache.wicket.markup.html.WebComponent;
@@ -50,22 +52,32 @@ public final class WicketMessageTagHandler extends
AbstractMarkupFilter
/** */
private static final long serialVersionUID = 1L;
- /** TODO Post 1.2: General: Namespace should not be a constant */
- private final static String WICKET_MESSAGE_ATTRIBUTE_NAME =
"wicket:message";
-
/**
* The id automatically assigned to tags with wicket:message attribute
but without id
*/
public final static String WICKET_MESSAGE_CONTAINER_ID =
"_message_attr_";
- /** singleton instance of {@link AttributeLocalizer} */
+ /**
+ * singleton instance of {@link AttributeLocalizer}
+ * @deprecated Do not use it because it is not aware of the markup
namespace
+ */
+ @Deprecated
public static final Behavior ATTRIBUTE_LOCALIZER = new
AttributeLocalizer();
/**
- * Construct.
+ * Constructor for the IComponentResolver role.
*/
public WicketMessageTagHandler()
{
+ this(null);
+ }
+
+ /**
+ * Constructor for the IMarkupFilter role.
+ */
+ public WicketMessageTagHandler(final MarkupResourceStream
markupResourceStream)
+ {
+ super(markupResourceStream);
}
@Override
@@ -77,7 +89,7 @@ public final class WicketMessageTagHandler extends
AbstractMarkupFilter
}
final String wicketMessageAttribute =
tag.getAttributes().getString(
- WICKET_MESSAGE_ATTRIBUTE_NAME);
+ getWicketMessageAttrName());
if ((wicketMessageAttribute != null) &&
(wicketMessageAttribute.trim().length() > 0))
{
@@ -91,7 +103,7 @@ public final class WicketMessageTagHandler extends
AbstractMarkupFilter
tag.setAutoComponentTag(true);
tag.setModified(true);
}
- tag.addBehavior(new AttributeLocalizer());
+ tag.addBehavior(new
AttributeLocalizer(getWicketMessageAttrName()));
}
return tag;
@@ -107,10 +119,22 @@ public final class WicketMessageTagHandler extends
AbstractMarkupFilter
{
private static final long serialVersionUID = 1L;
+ private final String wicketMessageAttrName;
+
+ public AttributeLocalizer()
+ {
+ this(MarkupParser.WICKET+':'+"message");
+ }
+
+ public AttributeLocalizer(String wicketMessageAttrName)
+ {
+ this.wicketMessageAttrName = wicketMessageAttrName;
+ }
+
@Override
public void onComponentTag(final Component component, final
ComponentTag tag)
{
- String expr =
tag.getAttributes().getString(WICKET_MESSAGE_ATTRIBUTE_NAME);
+ String expr =
tag.getAttributes().getString(wicketMessageAttrName);
if (!Strings.isEmpty(expr))
{
expr = expr.trim();
@@ -170,4 +194,10 @@ public final class WicketMessageTagHandler extends
AbstractMarkupFilter
}
return null;
}
+
+ private String getWicketMessageAttrName()
+ {
+ String wicketNamespace = getWicketNamespace();
+ return wicketNamespace + ':' + "message";
+ }
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/cf33db49/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/WicketNamespaceHandler.java
----------------------------------------------------------------------
diff --git
a/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/WicketNamespaceHandler.java
b/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/WicketNamespaceHandler.java
index 8bf33b7..2f60fa7 100644
---
a/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/WicketNamespaceHandler.java
+++
b/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/WicketNamespaceHandler.java
@@ -40,9 +40,6 @@ public final class WicketNamespaceHandler extends
AbstractMarkupFilter
/** Wicket URI */
private static final String WICKET_URI = "http://wicket.apache.org";
- /** The markup created by reading the markup file */
- private final MarkupResourceStream markup;
-
/**
* namespace prefix: e.g. <html xmlns:wicket="http://wicket.apache.org">
*/
@@ -56,7 +53,7 @@ public final class WicketNamespaceHandler extends
AbstractMarkupFilter
*/
public WicketNamespaceHandler(final MarkupResourceStream markup)
{
- this.markup = markup;
+ super(markup);
}
@Override
@@ -67,7 +64,7 @@ public final class WicketNamespaceHandler extends
AbstractMarkupFilter
final String namespace = determineWicketNamespace(tag);
if (namespace != null)
{
- markup.setWicketNamespace(namespace);
+
getMarkupResourceStream().setWicketNamespace(namespace);
}
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/cf33db49/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/WicketTagIdentifier.java
----------------------------------------------------------------------
diff --git
a/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/WicketTagIdentifier.java
b/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/WicketTagIdentifier.java
index b28fd24..45b7ab9 100644
---
a/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/WicketTagIdentifier.java
+++
b/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/WicketTagIdentifier.java
@@ -45,9 +45,6 @@ public final class WicketTagIdentifier extends
AbstractMarkupFilter
/** List of well known wicket tag names */
private static List<String> wellKnownTagNames;
- /** The current markup needed to get the markups namespace */
- private final MarkupResourceStream markup;
-
/**
* Construct.
*
@@ -56,7 +53,7 @@ public final class WicketTagIdentifier extends
AbstractMarkupFilter
*/
public WicketTagIdentifier(final MarkupResourceStream markup)
{
- this.markup = markup;
+ super(markup);
}
/**
@@ -73,7 +70,7 @@ public final class WicketTagIdentifier extends
AbstractMarkupFilter
@Override
protected MarkupElement onComponentTag(ComponentTag tag) throws
ParseException
{
- final String namespace = markup.getWicketNamespace();
+ final String namespace = getWicketNamespace();
// If the form <tag wicket:id = "value"> is used
final String wicketIdValue =
tag.getAttributes().getString(namespace + ":id");
http://git-wip-us.apache.org/repos/asf/wicket/blob/cf33db49/wicket-core/src/main/java/org/apache/wicket/markup/resolver/WicketMessageResolver.java
----------------------------------------------------------------------
diff --git
a/wicket-core/src/main/java/org/apache/wicket/markup/resolver/WicketMessageResolver.java
b/wicket-core/src/main/java/org/apache/wicket/markup/resolver/WicketMessageResolver.java
index fa4122a..ef929fa 100644
---
a/wicket-core/src/main/java/org/apache/wicket/markup/resolver/WicketMessageResolver.java
+++
b/wicket-core/src/main/java/org/apache/wicket/markup/resolver/WicketMessageResolver.java
@@ -168,7 +168,6 @@ public class WicketMessageResolver implements
IComponentResolver
*
* @param id
* @param messageKey
- * @param markupFragment
*/
public MessageContainer(final String id, final String
messageKey)
{
http://git-wip-us.apache.org/repos/asf/wicket/blob/cf33db49/wicket-core/src/test/java/org/apache/wicket/markup/html/link/HrefExpectedResult_2.html
----------------------------------------------------------------------
diff --git
a/wicket-core/src/test/java/org/apache/wicket/markup/html/link/HrefExpectedResult_2.html
b/wicket-core/src/test/java/org/apache/wicket/markup/html/link/HrefExpectedResult_2.html
index 74c04b2..a1cac60 100644
---
a/wicket-core/src/test/java/org/apache/wicket/markup/html/link/HrefExpectedResult_2.html
+++
b/wicket-core/src/test/java/org/apache/wicket/markup/html/link/HrefExpectedResult_2.html
@@ -14,7 +14,7 @@
-->
<html>
<body>
- <a href="../../myHref.html"></a>
- <a href="../../myHref.html"/>
+ <a href="myHref.html"></a>
+ <a href="myHref.html"></a>
</body>
</html>