Author: jdonnerstag
Date: Mon Feb 23 19:16:25 2009
New Revision: 747103

URL: http://svn.apache.org/viewvc?rev=747103&view=rev
Log:
fixed WICKET-2107 Misplaced IllegalStateExceptions when accessing stateful URL 
with different session

Modified:
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java?rev=747103&r1=747102&r2=747103&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java
 Mon Feb 23 19:16:25 2009
@@ -24,6 +24,7 @@
 import org.apache.wicket.RequestListenerInterface;
 import org.apache.wicket.behavior.IBehavior;
 import org.apache.wicket.behavior.IBehaviorListener;
+import org.apache.wicket.protocol.http.PageExpiredException;
 import org.apache.wicket.request.RequestParameters;
 
 /**
@@ -82,7 +83,8 @@
                final String id = getRequestParameters().getBehaviorId();
                if (id == null)
                {
-                       throw new IllegalStateException(
+                       // wicket-2107
+                       throw new PageExpiredException(
                                "Parameter behaviorId was not provided: unable 
to locate listener. Component: " +
                                        component.toString());
                }
@@ -93,16 +95,21 @@
 
                if (behaviors.size() > idAsInt)
                {
-                       behaviorListener = 
(IBehaviorListener)behaviors.get(idAsInt);
+                       IBehavior behavior = behaviors.get(idAsInt);
+                       if (behavior instanceof IBehaviorListener)
+                       {
+                               behaviorListener = (IBehaviorListener)behavior;
+                       }
                }
+
                if (behaviorListener == null)
                {
-                       throw new IllegalStateException("No behavior listener 
found with behaviorId " + id +
+                       // wicket-2107
+                       throw new PageExpiredException("No behavior listener 
found with behaviorId " + id +
                                "; Component: " + component.toString());
                }
 
                // Invoke the interface method
                behaviorListener.onRequest();
-
        }
 }
\ No newline at end of file


Reply via email to