You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2013/01/17 08:51:43 UTC

git commit: WICKET-4982 StatelessChecker: add helpful information to find stateful behavior

Updated Branches:
  refs/heads/master 88cf83c39 -> af3f84485


WICKET-4982 StatelessChecker: add helpful information to find stateful behavior


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

Branch: refs/heads/master
Commit: af3f84485ccf7a10a7fafe9246d80ff83b13daed
Parents: 88cf83c
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Thu Jan 17 09:50:31 2013 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Thu Jan 17 09:50:31 2013 +0200

----------------------------------------------------------------------
 .../devutils/stateless/StatelessChecker.java       |   25 +++++++++++++--
 1 files changed, 22 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/af3f8448/wicket-devutils/src/main/java/org/apache/wicket/devutils/stateless/StatelessChecker.java
----------------------------------------------------------------------
diff --git a/wicket-devutils/src/main/java/org/apache/wicket/devutils/stateless/StatelessChecker.java b/wicket-devutils/src/main/java/org/apache/wicket/devutils/stateless/StatelessChecker.java
index 4333e60..ac115c2 100644
--- a/wicket-devutils/src/main/java/org/apache/wicket/devutils/stateless/StatelessChecker.java
+++ b/wicket-devutils/src/main/java/org/apache/wicket/devutils/stateless/StatelessChecker.java
@@ -20,6 +20,9 @@ import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.Page;
 import org.apache.wicket.application.IComponentOnBeforeRenderListener;
+import org.apache.wicket.behavior.Behavior;
+import org.apache.wicket.util.lang.Classes;
+import org.apache.wicket.util.string.StringList;
 import org.apache.wicket.util.visit.IVisit;
 import org.apache.wicket.util.visit.IVisitor;
 
@@ -89,10 +92,26 @@ public class StatelessChecker implements IComponentOnBeforeRenderListener
 			};
 
 			final String msg = "'" + component + "' claims to be stateless but isn't.";
-			if (!component.isStateless())
+			if (component.isStateless() == false)
 			{
-				throw new IllegalArgumentException(msg +
-					" Possible reasons: no stateless hint, statefull behaviors");
+				StringList statefulBehaviors = new StringList();
+				for (Behavior b : component.getBehaviors())
+				{
+					if (b.getStatelessHint(component) == false)
+					{
+						statefulBehaviors.add(Classes.name(b.getClass()));
+					}
+				}
+				String reason;
+				if (statefulBehaviors.size() == 0)
+				{
+				    reason = " Possible reason: no stateless hint";
+				}
+				else
+				{
+				    reason = " Stateful behaviors: " + statefulBehaviors.join();
+				}
+				throw new IllegalStateException(msg + reason);
 			}
 
 			if (component instanceof MarkupContainer)