You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jc...@apache.org on 2007/10/22 19:04:21 UTC

svn commit: r587154 - /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/MarkupContainer.java

Author: jcompagner
Date: Mon Oct 22 10:04:20 2007
New Revision: 587154

URL: http://svn.apache.org/viewvc?rev=587154&view=rev
Log:
auto add components removed in detach instead of directly

Modified:
    wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/MarkupContainer.java

Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/MarkupContainer.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/MarkupContainer.java?rev=587154&r1=587153&r2=587154&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/MarkupContainer.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/MarkupContainer.java Mon Oct 22 10:04:20 2007
@@ -203,21 +203,29 @@
 
 		/* Replace strategy */
 		component.setAuto(true);
-// if (get(component.getId()) != null)
-// {
-// this.remove(component);
-// }
+
+		int index = children_indexOf(component);
+		if (index >= 0)
+		{
+			children_remove(index);
+		}
 		add(component);
 		component.prepareForRender();
-		if (markupStream == null)
+		try
 		{
-			component.render();
+			if (markupStream == null)
+			{
+				component.render();
+			}
+			else
+			{
+				component.render(markupStream);
+			}
 		}
-		else
+		finally
 		{
-			component.render(markupStream);
+			component.afterRender();
 		}
-		remove(component);
 		return true;
 	}
 
@@ -1438,18 +1446,23 @@
 	{
 		super.detachChildren();
 
-		for (int i = 0; i < children_size(); ++i)
+		for (int i = children_size(); i-- > 0;)
 		{
 			Object child = children_get(i, false);
 			if (child instanceof Component)
 			{
-				((Component)child).detach();
+				Component component = (Component)child;
+				component.detach();
 
 				if (child instanceof IComponentSourceProvider)
 				{
-					ComponentSourceEntry entry = new ComponentSourceEntry(this, (Component)child,
+					ComponentSourceEntry entry = new ComponentSourceEntry(this, component,
 							((IComponentSourceProvider)child).getComponentSource());
 					children_set(i, entry, false);
+				}
+				else if (component.isAuto())
+				{
+					children_remove(i);
 				}
 			}
 		}