WICKET-4330
Non standard ("wicket") namespace causes incorrect relative URL in certain cases


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/32616886
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/32616886
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/32616886

Branch: refs/heads/wicket-1.5.x
Commit: 3261688698c1c51808e574de7b3693da6e4991c3
Parents: 52c174a
Author: martin-g <[email protected]>
Authored: Wed Jan 11 14:10:30 2012 +0200
Committer: martin-g <[email protected]>
Committed: Wed Jan 11 14:57:22 2012 +0200

----------------------------------------------------------------------
 .../org/apache/wicket/markup/MarkupParser.java     |    2 +-
 .../parser/filter/RelativePathPrefixHandler.java   |   40 ++++++++++++++-
 2 files changed, 40 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/32616886/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 191a5f6..429e0d1 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
@@ -169,7 +169,7 @@ public class MarkupParser extends AbstractMarkupParser
                }
 
                filters.add(new OpenCloseTagExpander());
-               filters.add(new RelativePathPrefixHandler());
+               filters.add(new 
RelativePathPrefixHandler(markupResourceStream));
                filters.add(new EnclosureHandler());
                filters.add(new InlineEnclosureHandler());
                filters.add(new StyleAndScriptIdentifier(markup));

http://git-wip-us.apache.org/repos/asf/wicket/blob/32616886/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 2eca57c..ba7029f 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
@@ -23,6 +23,8 @@ import org.apache.wicket.MarkupContainer;
 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.WicketTag;
 import org.apache.wicket.markup.html.TransparentWebMarkupContainer;
@@ -95,6 +97,27 @@ public final class RelativePathPrefixHandler extends 
AbstractMarkupFilter
                }
        };
 
+       /** The markup created by reading the markup file */
+       private final MarkupResourceStream markup;
+
+       /**
+        * Constructor for the IComponentResolver role.
+        */
+       public RelativePathPrefixHandler()
+       {
+               this(null);
+       }
+
+       /**
+        * Constructor for the IMarkupFilter role
+        * @param markup
+        *      The markup created by reading the markup file
+        */
+       public RelativePathPrefixHandler(final MarkupResourceStream markup)
+       {
+               this.markup = markup;
+       }
+
        @Override
        protected final MarkupElement onComponentTag(ComponentTag tag) throws 
ParseException
        {
@@ -103,9 +126,11 @@ public final class RelativePathPrefixHandler extends 
AbstractMarkupFilter
                        return tag;
                }
 
+               String wicketIdAttr = getWicketNamespace() + ":" + "id";
+
                // Don't touch any wicket:id component and any auto-components
                if ((tag instanceof WicketTag) || (tag.isAutolinkEnabled() == 
true) ||
-                       (tag.getAttributes().get("wicket:id") != null))
+                       (tag.getAttributes().get(wicketIdAttr) != null))
                {
                        return tag;
                }
@@ -147,4 +172,17 @@ 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;
+       }
 }

Reply via email to