You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2013/11/07 09:49:27 UTC
git commit: WICKET-5060 fail early if fragment markup is no fragment
tag
Updated Branches:
refs/heads/master 2ab4c7c00 -> 774481800
WICKET-5060 fail early if fragment markup is no fragment tag
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/77448180
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/77448180
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/77448180
Branch: refs/heads/master
Commit: 7744818009db12eaf8f5e0477ee7a19d3d0da1d5
Parents: 2ab4c7c
Author: svenmeier <sv...@meiers.net>
Authored: Thu Nov 7 09:48:37 2013 +0100
Committer: svenmeier <sv...@meiers.net>
Committed: Thu Nov 7 09:48:37 2013 +0100
----------------------------------------------------------------------
.../panel/FragmentMarkupSourcingStrategy.java | 12 ++++
.../markup/html/panel/FragmentTestCase.java | 15 +++++
.../markup/html/panel/FragmentTestPanel.html | 11 ++--
.../markup/html/panel/FragmentTestPanel_2.html | 14 +++++
.../markup/html/panel/FragmentTestPanel_2.java | 58 ++++++++++++++++++++
5 files changed, 105 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/77448180/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/FragmentMarkupSourcingStrategy.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/FragmentMarkupSourcingStrategy.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/FragmentMarkupSourcingStrategy.java
index 81efccf..ac47e37 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/FragmentMarkupSourcingStrategy.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/FragmentMarkupSourcingStrategy.java
@@ -21,9 +21,11 @@ import org.apache.wicket.MarkupContainer;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.IMarkupFragment;
import org.apache.wicket.markup.Markup;
+import org.apache.wicket.markup.MarkupElement;
import org.apache.wicket.markup.MarkupException;
import org.apache.wicket.markup.MarkupNotFoundException;
import org.apache.wicket.markup.MarkupStream;
+import org.apache.wicket.markup.WicketTag;
import org.apache.wicket.util.lang.Args;
/**
@@ -143,6 +145,16 @@ public class FragmentMarkupSourcingStrategy extends AbstractMarkupSourcingStrate
throw new MarkupNotFoundException("No Markup found for Fragment " + markupId +
" in providing markup container " + getMarkupProvider(container));
}
+ else
+ {
+ MarkupElement fragmentTag = childMarkup.get(0);
+ if ((fragmentTag instanceof WicketTag && ((WicketTag)fragmentTag).isFragementTag()) == false)
+ {
+ throw new MarkupNotFoundException("Markup found for Fragment '" + markupId
+ + "' in providing markup container " + getMarkupProvider(container)
+ + " is not a fragment tag");
+ }
+ }
if (child == null)
{
http://git-wip-us.apache.org/repos/asf/wicket/blob/77448180/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/FragmentTestCase.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/FragmentTestCase.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/FragmentTestCase.java
index 61accdc..48b0b62 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/FragmentTestCase.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/FragmentTestCase.java
@@ -17,6 +17,7 @@
package org.apache.wicket.markup.html.panel;
import org.apache.wicket.WicketTestCase;
+import org.apache.wicket.markup.MarkupNotFoundException;
import org.junit.Test;
/**
@@ -29,4 +30,18 @@ public class FragmentTestCase extends WicketTestCase
{
tester.startComponentInPage(FragmentTestPanel.class);
}
+
+ @Test
+ public void testComponentAndFragmentWithSameId()
+ {
+ try
+ {
+ tester.startComponentInPage(FragmentTestPanel_2.class);
+ fail();
+ }
+ catch (MarkupNotFoundException ex)
+ {
+ assertTrue(ex.getMessage().contains("is not a fragment tag"));
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/77448180/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/FragmentTestPanel.html
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/FragmentTestPanel.html b/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/FragmentTestPanel.html
index 87a5f2a..c85f2cf 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/FragmentTestPanel.html
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/FragmentTestPanel.html
@@ -3,12 +3,13 @@
<wicket:panel>
<div wicket:id="test">[test fragment goes here]</div>
-</wicket:panel>
+
+ <wicket:fragment wicket:id="testFrag">
+ <wicket:message key="message.test">[test message]</wicket:message>
+ <span wicket:id="label">[test label]</span>
+ </wicket:fragment>
-<wicket:fragment wicket:id="testFrag">
- <wicket:message key="message.test">[test message]</wicket:message>
- <span wicket:id="label">[test label]</span>
-</wicket:fragment>
+</wicket:panel>
</body>
</html>
http://git-wip-us.apache.org/repos/asf/wicket/blob/77448180/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/FragmentTestPanel_2.html
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/FragmentTestPanel_2.html b/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/FragmentTestPanel_2.html
new file mode 100644
index 0000000..6d21336
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/FragmentTestPanel_2.html
@@ -0,0 +1,14 @@
+<html xmlns:wicket="http://wicket.apache.org">
+<body>
+
+<wicket:panel>
+ <div wicket:id="testFrag">[same id as fragment below]</div>
+ <div wicket:id="test">[test fragment goes here]</div>
+
+ <wicket:fragment wicket:id="testFrag">
+ </wicket:fragment>
+
+</wicket:panel>
+
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/wicket/blob/77448180/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/FragmentTestPanel_2.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/FragmentTestPanel_2.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/FragmentTestPanel_2.java
new file mode 100644
index 0000000..a6348d7
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/FragmentTestPanel_2.java
@@ -0,0 +1,58 @@
+/*
+ * 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.html.panel;
+
+import org.apache.wicket.markup.html.WebMarkupContainer;
+
+/**
+ *
+ */
+public class FragmentTestPanel_2 extends Panel
+{
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Construct.
+ *
+ * @param id
+ */
+ public FragmentTestPanel_2(String id)
+ {
+ super(id);
+
+ add(new WebMarkupContainer("testFrag"));
+ add(new TestFragment("test"));
+ }
+
+ /**
+ *
+ */
+ private class TestFragment extends Fragment
+ {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Construct.
+ *
+ * @param id
+ */
+ public TestFragment(String id)
+ {
+ super(id, "testFrag", FragmentTestPanel_2.this);
+ }
+ }
+}