Repository: wicket
Updated Branches:
  refs/heads/master 823b30b5f -> a367d02e1


WICKET-6116 Exception 'A child already exists' when backing to a page with some 
markups in a Border

Now autocomponents are added to border and not to its body


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

Branch: refs/heads/master
Commit: d259cf389808e6ed52e9af2f905400fe2e53a70f
Parents: 823b30b
Author: Andrea Del Bene <[email protected]>
Authored: Fri Mar 18 16:09:10 2016 +0100
Committer: Andrea Del Bene <[email protected]>
Committed: Sat Mar 19 16:56:56 2016 +0100

----------------------------------------------------------------------
 .../wicket/markup/html/border/Border.java       |  2 +-
 .../autocomponent/AutoComponentsBorder.html     |  4 +++
 .../autocomponent/AutoComponentsBorder.java     | 29 +++++++++++++++++++
 .../AutocomponetsGenerationTest.java            | 30 ++++++++++++++++----
 4 files changed, 59 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/d259cf38/wicket-core/src/main/java/org/apache/wicket/markup/html/border/Border.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/border/Border.java 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/border/Border.java
index 63da8f3..5ef0468 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/border/Border.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/border/Border.java
@@ -218,7 +218,7 @@ public abstract class Border extends WebMarkupContainer 
implements IComponentRes
        {
                for (Component component : children)
                {
-                       if (component == body)
+                       if (component == body || component.isAuto())
                        {
                                addToBorder(component);
                        }

http://git-wip-us.apache.org/repos/asf/wicket/blob/d259cf38/wicket-core/src/test/java/org/apache/wicket/markup/html/autocomponent/AutoComponentsBorder.html
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/autocomponent/AutoComponentsBorder.html
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/autocomponent/AutoComponentsBorder.html
new file mode 100644
index 0000000..5c3706e
--- /dev/null
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/autocomponent/AutoComponentsBorder.html
@@ -0,0 +1,4 @@
+<wicket:border>
+    <img src="img/relative_path_autocomponent.png">
+    <wicket:body/>
+</wicket:border>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/d259cf38/wicket-core/src/test/java/org/apache/wicket/markup/html/autocomponent/AutoComponentsBorder.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/autocomponent/AutoComponentsBorder.java
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/autocomponent/AutoComponentsBorder.java
new file mode 100644
index 0000000..baafdce
--- /dev/null
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/autocomponent/AutoComponentsBorder.java
@@ -0,0 +1,29 @@
+/**
+ *  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.autocomponent;
+
+import org.apache.wicket.markup.html.border.Border;
+
+public class AutoComponentsBorder extends Border
+{
+
+       public AutoComponentsBorder(String id)
+       {
+               super(id);
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/d259cf38/wicket-core/src/test/java/org/apache/wicket/markup/html/autocomponent/AutocomponetsGenerationTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/autocomponent/AutocomponetsGenerationTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/autocomponent/AutocomponetsGenerationTest.java
index ba36883..7c0f45d 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/autocomponent/AutocomponetsGenerationTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/autocomponent/AutocomponetsGenerationTest.java
@@ -16,18 +16,18 @@
  */
 package org.apache.wicket.markup.html.autocomponent;
 
+import org.apache.wicket.core.util.string.ComponentRenderer;
 import org.apache.wicket.markup.IMarkupCache;
-import org.apache.wicket.markup.html.internal.HtmlHeaderContainer;
 import org.apache.wicket.util.tester.WicketTestCase;
 import org.junit.Test;
 
-/*
- * Test case for https://issues.apache.org/jira/browse/WICKET-5904
- * and for https://issues.apache.org/jira/browse/WICKET-5908
- */
 public class AutocomponetsGenerationTest extends WicketTestCase
 {
 
+       /*
+        * Test for https://issues.apache.org/jira/browse/WICKET-5904
+        * and for https://issues.apache.org/jira/browse/WICKET-5908
+        */
        @Test
        public void autocomponetsNumberDoesntChange()
        {
@@ -45,4 +45,24 @@ public class AutocomponetsGenerationTest extends 
WicketTestCase
                //the number of child components must not have been changed
                assertEquals(childrenNumber, 
tester.getLastRenderedPage().size());
        }
+       
+       /*
+        * Test for https://issues.apache.org/jira/browse/WICKET-6116
+        */
+       @Test
+       public void borderResolvesAutocomponents() throws Exception
+       {
+               AutoComponentsBorder border = new AutoComponentsBorder("id");
+               
+               ComponentRenderer.renderComponent(border);
+               
+               //we expect to have a body container and an autocomponent for 
<img> tag
+               assertEquals(2, border.size());
+               
+               //let's render the same border again
+               ComponentRenderer.renderComponent(border);
+               
+               //the number of child components must not have been changed
+               assertEquals(2, border.size());
+       }
 }

Reply via email to