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 2014/12/08 23:06:25 UTC

wicket git commit: WICKET-5777 Reload of page leads to WicketRuntimeException

Repository: wicket
Updated Branches:
  refs/heads/master b6259e5f3 -> 4c931bd97


WICKET-5777 Reload of page leads to WicketRuntimeException

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

Branch: refs/heads/master
Commit: 4c931bd975a16acd8c05572a5d81e636c390bb93
Parents: b6259e5
Author: Andrea Del Bene <ad...@apache.org>
Authored: Mon Dec 8 23:05:49 2014 +0100
Committer: Andrea Del Bene <ad...@apache.org>
Committed: Mon Dec 8 23:05:49 2014 +0100

----------------------------------------------------------------------
 .../markup/resolver/HtmlHeaderResolver.java     | 37 +++++++++++++++++---
 1 file changed, 32 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/4c931bd9/wicket-core/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java b/wicket-core/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java
index a915a75..408d9d7 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java
@@ -94,20 +94,29 @@ public class HtmlHeaderResolver implements IComponentResolver
 				// It is <wicket:head>. Because they do not provide any
 				// additional functionality they are merely a means of surrounding relevant
 				// markup. Thus we simply create a WebMarkupContainer to handle
-				// the tag.
-				WebMarkupContainer wicketHeadContainer = new WicketHeadContainer();
-
+				// the tag (class WicketHeadContainer).
+				
 				if (header == null)
 				{
 					// Create a special header component which will gather
 					// additional input the <head> from 'contributors'.
 					header = newHtmlHeaderContainer(HtmlHeaderSectionHandler.HEADER_ID +
 						page.getAutoIndex(), tag);
-					header.add(wicketHeadContainer);
+					header.add(new WicketHeadContainer());
 					return header;
 				}
 
-				header.add(wicketHeadContainer);
+				WicketHeadContainer wicketHeadContainer = 
+					header.visitChildren(new FindWicketHeadContainer());
+				
+				//We just need one WicketHeadContainer, no matter how 
+				//many <wicket:head> we have.
+				if (wicketHeadContainer == null)
+				{
+					wicketHeadContainer = new WicketHeadContainer();
+					header.add(wicketHeadContainer);
+				}
+				
 				return wicketHeadContainer;
 			}
 			else if (container instanceof HtmlHeaderContainer)
@@ -183,4 +192,22 @@ public class HtmlHeaderResolver implements IComponentResolver
 			setRenderBodyOnly(true);
 		}
 	}
+	
+	/**
+	 * Visitor to find children of type {@link WicketHeadContainer}}
+	 */
+	private static class FindWicketHeadContainer implements 
+			IVisitor<Component, WicketHeadContainer>
+	{
+		@Override
+		public void component(Component component, IVisit<WicketHeadContainer> visit)
+		{
+			if(component instanceof WicketHeadContainer)
+			{
+				WicketHeadContainer reult = (WicketHeadContainer)component;
+				visit.stop(reult);
+			}
+		}
+		
+	}
 }


Re: wicket git commit: WICKET-5777 Reload of page leads to WicketRuntimeException

Posted by Martin Grigorov <mg...@apache.org>.
On Mon, Dec 8, 2014 at 11:06 PM, <ad...@apache.org> wrote:

> Repository: wicket
> Updated Branches:
>   refs/heads/master b6259e5f3 -> 4c931bd97
>
>
> WICKET-5777 Reload of page leads to WicketRuntimeException
>
> Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
> Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/4c931bd9
> Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/4c931bd9
> Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/4c931bd9
>
> Branch: refs/heads/master
> Commit: 4c931bd975a16acd8c05572a5d81e636c390bb93
> Parents: b6259e5
> Author: Andrea Del Bene <ad...@apache.org>
> Authored: Mon Dec 8 23:05:49 2014 +0100
> Committer: Andrea Del Bene <ad...@apache.org>
> Committed: Mon Dec 8 23:05:49 2014 +0100
>
> ----------------------------------------------------------------------
>  .../markup/resolver/HtmlHeaderResolver.java     | 37 +++++++++++++++++---
>  1 file changed, 32 insertions(+), 5 deletions(-)
> ----------------------------------------------------------------------
>
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/4c931bd9/wicket-core/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java
> index a915a75..408d9d7 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/markup/resolver/HtmlHeaderResolver.java
> @@ -94,20 +94,29 @@ public class HtmlHeaderResolver implements
> IComponentResolver
>                                 // It is <wicket:head>. Because they do
> not provide any
>                                 // additional functionality they are
> merely a means of surrounding relevant
>                                 // markup. Thus we simply create a
> WebMarkupContainer to handle
> -                               // the tag.
> -                               WebMarkupContainer wicketHeadContainer =
> new WicketHeadContainer();
> -
> +                               // the tag (class WicketHeadContainer).
> +
>                                 if (header == null)
>                                 {
>                                         // Create a special header
> component which will gather
>                                         // additional input the <head>
> from 'contributors'.
>                                         header =
> newHtmlHeaderContainer(HtmlHeaderSectionHandler.HEADER_ID +
>                                                 page.getAutoIndex(), tag);
> -                                       header.add(wicketHeadContainer);
> +                                       header.add(new
> WicketHeadContainer());
>                                         return header;
>                                 }
>
> -                               header.add(wicketHeadContainer);
> +                               WicketHeadContainer wicketHeadContainer =
> +                                       header.visitChildren(new
> FindWicketHeadContainer());
> +
> +                               //We just need one WicketHeadContainer, no
> matter how
> +                               //many <wicket:head> we have.
> +                               if (wicketHeadContainer == null)
> +                               {
> +                                       wicketHeadContainer = new
> WicketHeadContainer();
> +                                       header.add(wicketHeadContainer);
> +                               }
> +
>                                 return wicketHeadContainer;
>                         }
>                         else if (container instanceof HtmlHeaderContainer)
> @@ -183,4 +192,22 @@ public class HtmlHeaderResolver implements
> IComponentResolver
>                         setRenderBodyOnly(true);
>                 }
>         }
> +
> +       /**
> +        * Visitor to find children of type {@link WicketHeadContainer}}
> +        */
> +       private static class FindWicketHeadContainer implements
> +                       IVisitor<Component, WicketHeadContainer>
> +       {
> +               @Override
> +               public void component(Component component,
> IVisit<WicketHeadContainer> visit)
> +               {
> +                       if(component instanceof WicketHeadContainer)
>

Wicket style uses a space after 'if' and before '('


> +                       {
> +                               WicketHeadContainer reult =
> (WicketHeadContainer)component;
>

s/reult/result/


> +                               visit.stop(reult);
> +                       }
> +               }
> +
> +       }
>  }
>
>