Author: jdonnerstag
Date: Wed Apr 2 02:23:23 2008
New Revision: 643810
URL: http://svn.apache.org/viewvc?rev=643810&view=rev
Log:
fix for: It is currently working fine if inheritance is just one level deep.
But if it is 2 or more level deep than each higher level gets inserted after
the first <wicket:head>. E.g.
<script href="basebase.css"/>
<script href="base.css"/>
<script href="basebase.css"/>
<-- gets inserted here ><script href="extension.css"/>
<script href="base.css"/>
should be like
<script href="basebase.css"/>
<script href="base.css"/>
<script href="extension.css"/>
Added:
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceBaseBase_13.html
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceBaseBase_13.java
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceBase_13.html
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceBase_13.java
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceExpectedResult_13.html
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceExtension_13.html
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceExtension_13.java
Modified:
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/MergedMarkup.java
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceTest.java
Modified:
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/MergedMarkup.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/MergedMarkup.java?rev=643810&r1=643809&r2=643810&view=diff
==============================================================================
---
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/MergedMarkup.java
(original)
+++
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/MergedMarkup.java
Wed Apr 2 02:23:23 2008
@@ -64,20 +64,22 @@
// Copy settings from derived markup
getMarkupResourceData().setResource(markup.getMarkupResourceData().getResource());
getMarkupResourceData().setXmlDeclaration(
-
markup.getMarkupResourceData().getXmlDeclaration());
+ markup.getMarkupResourceData().getXmlDeclaration());
getMarkupResourceData().setEncoding(markup.getMarkupResourceData().getEncoding());
getMarkupResourceData().setWicketNamespace(
-
markup.getMarkupResourceData().getWicketNamespace());
+ markup.getMarkupResourceData().getWicketNamespace());
getMarkupResourceData().setBaseMarkupResourceData(baseMarkup.getMarkupResourceData());
if (log.isDebugEnabled())
{
- String derivedResource =
Strings.afterLast(markup.getMarkupResourceData().getResource()
- .toString(), '/');
+ String derivedResource =
Strings.afterLast(markup.getMarkupResourceData()
+ .getResource()
+ .toString(), '/');
String baseResource =
Strings.afterLast(baseMarkup.getMarkupResourceData()
- .getResource().toString(), '/');
+ .getResource()
+ .toString(), '/');
log.debug("Merge markup: derived markup: " +
derivedResource + "; base markup: " +
- baseResource);
+ baseResource);
}
// Merge derived and base markup
@@ -107,6 +109,9 @@
// True if either <wicket:head> or <head> has been processed
boolean wicketHeadProcessed = false;
+ // True, if <head> was found
+ boolean foundHeadTag = false;
+
// Add all elements from the base markup to the new list
// until <wicket:child/> is found. Convert <wicket:child/>
// into <wicket:child> and add it as well.
@@ -127,10 +132,11 @@
// Make sure all tags of the base markup remember where
they are
// from
if ((baseMarkup.getMarkupResourceData().getResource()
!= null) &&
- (tag.getMarkupClass() == null))
+ (tag.getMarkupClass() == null))
{
-
tag.setMarkupClass(baseMarkup.getMarkupResourceData().getResource()
- .getMarkupClass());
+
tag.setMarkupClass(baseMarkup.getMarkupResourceData()
+ .getResource()
+ .getMarkupClass());
}
if (element instanceof WicketTag)
@@ -138,12 +144,12 @@
WicketTag wtag = (WicketTag)element;
// Found org.apache.wicket.child in base
markup. In case of 3+
- // level
- // inheritance make sure the child tag is not
from one of the
- // deeper levels
+ // level inheritance make sure the child tag is
not from one of
+ // the deeper levels
if (wtag.isChildTag() &&
- (tag.getMarkupClass() ==
baseMarkup.getMarkupResourceData().getResource()
-
.getMarkupClass()))
+ (tag.getMarkupClass() ==
baseMarkup.getMarkupResourceData()
+ .getResource()
+ .getMarkupClass()))
{
if (wtag.isOpenClose())
{
@@ -152,7 +158,8 @@
WicketTag childOpenTag =
(WicketTag)wtag.mutable();
childOpenTag.getXmlTag().setType(XmlTag.OPEN);
childOpenTag.setMarkupClass(baseMarkup.getMarkupResourceData()
-
.getResource().getMarkupClass());
+ .getResource()
+ .getMarkupClass());
addMarkupElement(childOpenTag);
break;
}
@@ -165,15 +172,15 @@
else
{
throw new
WicketRuntimeException(
- "Did not expect
a </wicket:child> tag in " + baseMarkup.toString());
+ "Did not expect a
</wicket:child> tag in " + baseMarkup.toString());
}
}
// Process the head of the extended markup only
once
if (wicketHeadProcessed == false)
{
- // if </wicket:head> in base markup
- if (wtag.isClose() && wtag.isHeadTag())
+ // if </wicket:head> in base markup and
no <head>
+ if (wtag.isClose() && wtag.isHeadTag()
&& (foundHeadTag == false))
{
wicketHeadProcessed = true;
@@ -202,9 +209,15 @@
// Process the head of the extended markup only once
if (wicketHeadProcessed == false)
{
+ // Remember that we found <head> in the base
markup
+ if (tag.isOpen() && TagUtils.isHeadTag(tag))
+ {
+ foundHeadTag = true;
+ }
+
// if <head> in base markup
if ((tag.isClose() && TagUtils.isHeadTag(tag))
||
- (tag.isOpen() &&
TagUtils.isBodyTag(tag)))
+ (tag.isOpen() &&
TagUtils.isBodyTag(tag)))
{
wicketHeadProcessed = true;
@@ -220,7 +233,7 @@
if (baseIndex == baseMarkup.size())
{
throw new WicketRuntimeException("Expected to find
<wicket:child/> in base markup: " +
- baseMarkup.toString());
+ baseMarkup.toString());
}
// Now append all elements from the derived markup starting with
@@ -243,7 +256,7 @@
if (extendIndex == markup.size())
{
throw new WicketRuntimeException(
- "Missing close tag </wicket:extend> in
derived markup: " + markup.toString());
+ "Missing close tag </wicket:extend> in derived
markup: " + markup.toString());
}
// If <wicket:child> than skip the body and find </wicket:child>
@@ -258,23 +271,24 @@
if (tag.isChildTag() && tag.isClose())
{
// Ok, skipped the childs
content
-
tag.setMarkupClass(baseMarkup.getMarkupResourceData().getResource()
-
.getMarkupClass());
+
tag.setMarkupClass(baseMarkup.getMarkupResourceData()
+ .getResource()
+ .getMarkupClass());
addMarkupElement(tag);
break;
}
else
{
throw new
WicketRuntimeException(
- "Wicket tags
like <wicket:xxx> are not allowed in between <wicket:child> and </wicket:child>
tags: " +
-
markup.toString());
+ "Wicket tags like
<wicket:xxx> are not allowed in between <wicket:child> and </wicket:child>
tags: " +
+
markup.toString());
}
}
else if (element instanceof ComponentTag)
{
throw new WicketRuntimeException(
- "Wicket tags identified
by wicket:id are not allowed in between <wicket:child> and </wicket:child>
tags: " +
-
markup.toString());
+ "Wicket tags identified by
wicket:id are not allowed in between <wicket:child> and </wicket:child> tags: "
+
+ markup.toString());
}
}
@@ -282,7 +296,7 @@
if (baseIndex == baseMarkup.size())
{
throw new WicketRuntimeException(
- "Expected to find
</wicket:child> in base markup: " + baseMarkup.toString());
+ "Expected to find </wicket:child> in
base markup: " + baseMarkup.toString());
}
}
else
@@ -291,8 +305,9 @@
// But first add </wicket:child>
WicketTag childCloseTag = (WicketTag)childTag.mutable();
childCloseTag.getXmlTag().setType(XmlTag.CLOSE);
-
childCloseTag.setMarkupClass(baseMarkup.getMarkupResourceData().getResource()
- .getMarkupClass());
+
childCloseTag.setMarkupClass(baseMarkup.getMarkupResourceData()
+ .getResource()
+ .getMarkupClass());
addMarkupElement(childCloseTag);
}
@@ -304,11 +319,12 @@
// Make sure all tags of the base markup remember where
they are
// from
if ((element instanceof ComponentTag) &&
-
(baseMarkup.getMarkupResourceData().getResource() != null))
+
(baseMarkup.getMarkupResourceData().getResource() != null))
{
ComponentTag tag = (ComponentTag)element;
-
tag.setMarkupClass(baseMarkup.getMarkupResourceData().getResource()
- .getMarkupClass());
+
tag.setMarkupClass(baseMarkup.getMarkupResourceData()
+ .getResource()
+ .getMarkupClass());
}
}
@@ -316,8 +332,9 @@
// it must enclose ALL of the <wicket:head> tags.
// Note: HtmlHeaderSectionHandler does something similar, but
because
// markup filters are not called for merged markup again, ...
- if
(Page.class.isAssignableFrom(markup.getMarkupResourceData().getResource()
- .getMarkupClass()))
+ if (Page.class.isAssignableFrom(markup.getMarkupResourceData()
+ .getResource()
+ .getMarkupClass()))
{
// Find the position inside the markup for first
<wicket:head>,
// last </wicket:head> and <head>
@@ -329,17 +346,17 @@
MarkupElement element = get(i);
if ((hasOpenWicketHead == -1) && (element
instanceof WicketTag) &&
-
((WicketTag)element).isHeadTag())
+ ((WicketTag)element).isHeadTag())
{
hasOpenWicketHead = i;
}
else if ((element instanceof WicketTag) &&
((WicketTag)element).isHeadTag() &&
- ((WicketTag)element).isClose())
+ ((WicketTag)element).isClose())
{
hasCloseWicketHead = i;
}
else if ((hasHead == -1) && (element instanceof
ComponentTag) &&
-
TagUtils.isHeadTag((ComponentTag)element))
+
TagUtils.isHeadTag((ComponentTag)element))
{
hasHead = i;
}
Added:
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceBaseBase_13.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceBaseBase_13.html?rev=643810&view=auto
==============================================================================
---
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceBaseBase_13.html
(added)
+++
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceBaseBase_13.html
Wed Apr 2 02:23:23 2008
@@ -0,0 +1,10 @@
+<html>
+<wicket:head>
+ <link type="text/css" rel="stylesheet" href="basebase.css"/>
+</wicket:head>
+<body>
+ basebase
+ <wicket:child/>
+ basebase
+</body>
+</html>
Added:
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceBaseBase_13.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceBaseBase_13.java?rev=643810&view=auto
==============================================================================
---
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceBaseBase_13.java
(added)
+++
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceBaseBase_13.java
Wed Apr 2 02:23:23 2008
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.markup;
+
+import org.apache.wicket.markup.html.WebPage;
+
+
+/**
+ */
+public class MarkupInheritanceBaseBase_13 extends WebPage
+{
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Construct.
+ *
+ */
+ public MarkupInheritanceBaseBase_13()
+ {
+ }
+}
Added:
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceBase_13.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceBase_13.html?rev=643810&view=auto
==============================================================================
---
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceBase_13.html
(added)
+++
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceBase_13.html
Wed Apr 2 02:23:23 2008
@@ -0,0 +1,8 @@
+<wicket:head>
+ <link type="text/css" rel="stylesheet" href="base.css"/>
+</wicket:head>
+<wicket:extend>
+ base
+ <wicket:child/>
+ base
+</wicket:extend>
Added:
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceBase_13.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceBase_13.java?rev=643810&view=auto
==============================================================================
---
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceBase_13.java
(added)
+++
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceBase_13.java
Wed Apr 2 02:23:23 2008
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.markup;
+
+
+/**
+ */
+public class MarkupInheritanceBase_13 extends MarkupInheritanceBaseBase_13
+{
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Construct.
+ *
+ */
+ public MarkupInheritanceBase_13()
+ {
+ super();
+ }
+}
Added:
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceExpectedResult_13.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceExpectedResult_13.html?rev=643810&view=auto
==============================================================================
---
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceExpectedResult_13.html
(added)
+++
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceExpectedResult_13.html
Wed Apr 2 02:23:23 2008
@@ -0,0 +1,20 @@
+<html>
+<head>
+ <link href="../basebase.css" type="text/css" rel="stylesheet"/>
+
+ <link href="../base.css" type="text/css" rel="stylesheet"/>
+
+ <link href="../extension.css" type="text/css" rel="stylesheet"/>
+</head>
+<body>
+ basebase
+ <wicket:child><wicket:extend>
+ base
+ <wicket:child><wicket:extend>
+ extension
+</wicket:extend></wicket:child>
+ base
+</wicket:extend></wicket:child>
+ basebase
+</body>
+</html>
Added:
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceExtension_13.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceExtension_13.html?rev=643810&view=auto
==============================================================================
---
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceExtension_13.html
(added)
+++
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceExtension_13.html
Wed Apr 2 02:23:23 2008
@@ -0,0 +1,6 @@
+<wicket:head>
+ <link type="text/css" rel="stylesheet" href="extension.css"/>
+</wicket:head>
+<wicket:extend>
+ extension
+</wicket:extend>
Added:
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceExtension_13.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceExtension_13.java?rev=643810&view=auto
==============================================================================
---
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceExtension_13.java
(added)
+++
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceExtension_13.java
Wed Apr 2 02:23:23 2008
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.markup;
+
+/**
+ */
+public class MarkupInheritanceExtension_13 extends MarkupInheritanceBase_13
+{
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Construct.
+ *
+ */
+ public MarkupInheritanceExtension_13()
+ {
+ super();
+ }
+}
Modified:
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceTest.java?rev=643810&r1=643809&r2=643810&view=diff
==============================================================================
---
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceTest.java
(original)
+++
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupInheritanceTest.java
Wed Apr 2 02:23:23 2008
@@ -76,11 +76,9 @@
// Validate the document
assertEquals(MarkupInheritanceExtension_4.class,
tester.getLastRenderedPage().getClass());
String document = tester.getServletResponse().getDocument();
- DiffUtil.validatePage(document, this.getClass(),
"MarkupInheritanceExpectedResult_4.html",
- true);
+ DiffUtil.validatePage(document, getClass(),
"MarkupInheritanceExpectedResult_4.html", true);
- MarkupInheritanceExtension_4 page =
(MarkupInheritanceExtension_4)tester
- .getLastRenderedPage();
+ MarkupInheritanceExtension_4 page =
(MarkupInheritanceExtension_4)tester.getLastRenderedPage();
Link link = (Link)page.get("link");
tester.setupRequestAndResponse();
@@ -90,8 +88,8 @@
assertEquals(MarkupInheritanceExtension_4.class,
tester.getLastRenderedPage().getClass());
document = tester.getServletResponse().getDocument();
- DiffUtil.validatePage(document, this.getClass(),
- "MarkupInheritanceExpectedResult_4-1.html",
true);
+ DiffUtil.validatePage(document, getClass(),
"MarkupInheritanceExpectedResult_4-1.html",
+ true);
}
/**
@@ -157,5 +155,13 @@
public void testRenderHomePage_12() throws Exception
{
executeTest(MarkupInheritanceExtension_12.class,
"MarkupInheritanceExpectedResult_12.html");
+ }
+
+ /**
+ * @throws Exception
+ */
+ public void testRenderHomePage_13() throws Exception
+ {
+ executeTest(MarkupInheritanceExtension_13.class,
"MarkupInheritanceExpectedResult_13.html");
}
}