You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by ad...@apache.org on 2015/07/11 20:16:52 UTC

[1/3] wicket git commit: WICKET-5941 Headers not rendered for components inside TransparentWebMarkupContainer on ajax update

Repository: wicket
Updated Branches:
  refs/heads/master 6f66349a8 -> 9618e7024


WICKET-5941 Headers not rendered for components inside TransparentWebMarkupContainer on ajax update


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

Branch: refs/heads/master
Commit: 9618e702442d3c7c128ea736f8a23db1d3d4200a
Parents: 245e9e7
Author: Andrea Del Bene <ad...@apache.org>
Authored: Sat Jul 11 20:15:30 2015 +0200
Committer: Andrea Del Bene <ad...@apache.org>
Committed: Sat Jul 11 20:16:21 2015 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/wicket/Component.java  |  7 +++++-
 .../html/TransparentWebMarkupContainer.java     | 26 +++++++++++++++++++-
 2 files changed, 31 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/9618e702/wicket-core/src/main/java/org/apache/wicket/Component.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/Component.java b/wicket-core/src/main/java/org/apache/wicket/Component.java
index f765a86..b186e91 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Component.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Component.java
@@ -4430,7 +4430,12 @@ public abstract class Component
 		return state;
 	}
 	
-	public boolean isRendering()
+	/**
+	 * Says if the component is rendering or not checking the corresponding flag.
+	 * 
+	 * @return true if this component is rendering, false otherwise.
+	 */
+	public final boolean isRendering()
 	{
 		return getFlag(FLAG_RENDERING);
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/9618e702/wicket-core/src/main/java/org/apache/wicket/markup/html/TransparentWebMarkupContainer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/TransparentWebMarkupContainer.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/TransparentWebMarkupContainer.java
index 945803e..5add398 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/TransparentWebMarkupContainer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/TransparentWebMarkupContainer.java
@@ -71,6 +71,12 @@ public class TransparentWebMarkupContainer extends WebMarkupContainer implements
 	@Override
 	public void internalRenderHead(HtmlHeaderContainer container)
 	{
+		/*
+		 * https://issues.apache.org/jira/browse/WICKET-5941
+		 * 
+		 * if this component is updated via AJAX and is the root
+		 * one, then render head also for embedded components.
+		 */
 		if(isAjaxRequest() && !isParentRendering())
 		{
 			renderHeadForInnerSiblings(container);
@@ -79,13 +85,23 @@ public class TransparentWebMarkupContainer extends WebMarkupContainer implements
 		super.internalRenderHead(container);
 	}
 
+	/**
+	 * Says if parent container is rendering or not.
+	 * 
+	 * @return true if parent is rendering, false otherwise.
+	 */
 	private boolean isParentRendering()
 	{
 		MarkupContainer parent = getParent();
 		
 		return parent != null ? parent.isRendering() : false;
 	}
-
+	
+	/**
+	 * Says if the current request is an AJAX one.
+	 * 
+	 * @return true if the current request is an AJAX one, false otherwise.
+	 */
 	private boolean isAjaxRequest()
 	{
 		Request request = RequestCycle.get().getRequest();
@@ -99,6 +115,13 @@ public class TransparentWebMarkupContainer extends WebMarkupContainer implements
 		return false;
 	}
 
+	/**
+	 * Renders head for embedded component, i.e. those who are not added 
+	 * directly to this container but have the markup inside it.
+	 * 
+	 * @param container
+	 * 				The HtmlHeaderContainer
+	 */
 	private void renderHeadForInnerSiblings(HtmlHeaderContainer container)
 	{
 		MarkupStream stream = new MarkupStream(getMarkup());
@@ -127,6 +150,7 @@ public class TransparentWebMarkupContainer extends WebMarkupContainer implements
 					component.internalRenderHead(container);
 				}		
 				
+				//consider just direct children
 				stream.skipToMatchingCloseTag(tag);
 			}			
 		}


[2/3] wicket git commit: added method to see if a component is rendering

Posted by ad...@apache.org.
added method to see if a component is rendering


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

Branch: refs/heads/master
Commit: 245e9e71bc40d0b300e692d636b997d79e3f6656
Parents: a8fd5a7
Author: Andrea Del Bene <ad...@apache.org>
Authored: Wed Jul 8 23:19:04 2015 +0200
Committer: Andrea Del Bene <ad...@apache.org>
Committed: Sat Jul 11 20:16:21 2015 +0200

----------------------------------------------------------------------
 wicket-core/src/main/java/org/apache/wicket/Component.java  | 5 +++++
 .../wicket/markup/html/TransparentWebMarkupContainer.java   | 9 ++++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/245e9e71/wicket-core/src/main/java/org/apache/wicket/Component.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/Component.java b/wicket-core/src/main/java/org/apache/wicket/Component.java
index 947f69c..f765a86 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Component.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Component.java
@@ -4429,6 +4429,11 @@ public abstract class Component
 		setRequestFlag(RFLAG_ENABLED_IN_HIERARCHY_VALUE, state);
 		return state;
 	}
+	
+	public boolean isRendering()
+	{
+		return getFlag(FLAG_RENDERING);
+	}
 
 	/**
 	 * Checks whether or not a listener method can be invoked on this component. Usually components

http://git-wip-us.apache.org/repos/asf/wicket/blob/245e9e71/wicket-core/src/main/java/org/apache/wicket/markup/html/TransparentWebMarkupContainer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/TransparentWebMarkupContainer.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/TransparentWebMarkupContainer.java
index d4de194..945803e 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/TransparentWebMarkupContainer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/TransparentWebMarkupContainer.java
@@ -71,7 +71,7 @@ public class TransparentWebMarkupContainer extends WebMarkupContainer implements
 	@Override
 	public void internalRenderHead(HtmlHeaderContainer container)
 	{
-		if(isAjaxRequest())
+		if(isAjaxRequest() && !isParentRendering())
 		{
 			renderHeadForInnerSiblings(container);
 		}
@@ -79,6 +79,13 @@ public class TransparentWebMarkupContainer extends WebMarkupContainer implements
 		super.internalRenderHead(container);
 	}
 
+	private boolean isParentRendering()
+	{
+		MarkupContainer parent = getParent();
+		
+		return parent != null ? parent.isRendering() : false;
+	}
+
 	private boolean isAjaxRequest()
 	{
 		Request request = RequestCycle.get().getRequest();


[3/3] wicket git commit: WICKET-5941 Headers not rendered for components inside TransparentWebMarkupContainer on ajax update

Posted by ad...@apache.org.
WICKET-5941 Headers not rendered for components inside TransparentWebMarkupContainer on ajax update


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

Branch: refs/heads/master
Commit: a8fd5a763cd316224b1683c70bffc6786fecbfde
Parents: 6f66349
Author: Andrea Del Bene <ad...@apache.org>
Authored: Tue Jul 7 11:31:48 2015 +0200
Committer: Andrea Del Bene <ad...@apache.org>
Committed: Sat Jul 11 20:16:21 2015 +0200

----------------------------------------------------------------------
 .../html/TransparentWebMarkupContainer.java     | 63 ++++++++++++++++++++
 .../markup/resolver/ComponentResolvers.java     |  4 +-
 2 files changed, 65 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/a8fd5a76/wicket-core/src/main/java/org/apache/wicket/markup/html/TransparentWebMarkupContainer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/TransparentWebMarkupContainer.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/TransparentWebMarkupContainer.java
index ef406c2..d4de194 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/TransparentWebMarkupContainer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/TransparentWebMarkupContainer.java
@@ -19,8 +19,14 @@ package org.apache.wicket.markup.html;
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.MarkupElement;
 import org.apache.wicket.markup.MarkupStream;
+import org.apache.wicket.markup.html.internal.HtmlHeaderContainer;
+import org.apache.wicket.markup.resolver.ComponentResolvers;
 import org.apache.wicket.markup.resolver.IComponentResolver;
+import org.apache.wicket.request.Request;
+import org.apache.wicket.request.cycle.RequestCycle;
+import org.apache.wicket.request.http.WebRequest;
 
 /**
  * A simple "transparent" markup container.
@@ -61,4 +67,61 @@ public class TransparentWebMarkupContainer extends WebMarkupContainer implements
 		}
 		return resolvedComponent;
 	}
+	
+	@Override
+	public void internalRenderHead(HtmlHeaderContainer container)
+	{
+		if(isAjaxRequest())
+		{
+			renderHeadForInnerSiblings(container);
+		}
+		
+		super.internalRenderHead(container);
+	}
+
+	private boolean isAjaxRequest()
+	{
+		Request request = RequestCycle.get().getRequest();
+		
+		if( request instanceof WebRequest)
+		{	
+			WebRequest webRequest = (WebRequest)request;
+			return webRequest.isAjax();
+		}
+		
+		return false;
+	}
+
+	private void renderHeadForInnerSiblings(HtmlHeaderContainer container)
+	{
+		MarkupStream stream = new MarkupStream(getMarkup());
+		
+		while (stream.hasMore())
+		{
+			MarkupElement childOpenTag = stream.nextOpenTag();
+			
+			if ((childOpenTag instanceof ComponentTag) && !stream.atCloseTag())
+			{
+				// Get element as tag
+				final ComponentTag tag = (ComponentTag)childOpenTag;
+
+				// Get component id
+				final String id = tag.getId();
+
+				Component component = null;
+				
+				if (get(id) == null)
+				{
+					component = ComponentResolvers.resolveByComponentHierarchy(this, stream, tag);					
+				}
+				
+				if (component != null)
+				{
+					component.internalRenderHead(container);
+				}		
+				
+				stream.skipToMatchingCloseTag(tag);
+			}			
+		}
+	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/a8fd5a76/wicket-core/src/main/java/org/apache/wicket/markup/resolver/ComponentResolvers.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/resolver/ComponentResolvers.java b/wicket-core/src/main/java/org/apache/wicket/markup/resolver/ComponentResolvers.java
index 47e431f..d547a9d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/resolver/ComponentResolvers.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/resolver/ComponentResolvers.java
@@ -75,7 +75,7 @@ public class ComponentResolvers
 	 * @param filter
 	 * @return Null, if no component was found
 	 */
-	private static Component resolveByApplication(final MarkupContainer container,
+	public static Component resolveByApplication(final MarkupContainer container,
 		final MarkupStream markupStream, final ComponentTag tag, final ResolverFilter filter)
 	{
 		for (final IComponentResolver resolver : Application.get()
@@ -103,7 +103,7 @@ public class ComponentResolvers
 	 * @param tag
 	 * @return Null, if no component was found
 	 */
-	private static Component resolveByComponentHierarchy(final MarkupContainer container,
+	public static Component resolveByComponentHierarchy(final MarkupContainer container,
 		final MarkupStream markupStream, final ComponentTag tag)
 	{
 		Component cursor = container;