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)