Author: ivaynberg
Date: Thu Oct 14 17:40:43 2010
New Revision: 1022625

URL: http://svn.apache.org/viewvc?rev=1022625&view=rev
Log:

Issue: WICKET-3098

Modified:
    
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/RequestListenerInterface.java
    
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java

Modified: 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/RequestListenerInterface.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/RequestListenerInterface.java?rev=1022625&r1=1022624&r2=1022625&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/RequestListenerInterface.java
 (original)
+++ 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/RequestListenerInterface.java
 Thu Oct 14 17:40:43 2010
@@ -166,11 +166,11 @@ public class RequestListenerInterface
         */
        public final void invoke(final Page page, final Component component)
        {
-               if (!component.isEnabled() || !component.isVisibleInHierarchy())
+               if (!component.isEnabledInHierarchy() || 
!component.isVisibleInHierarchy())
                {
                        // just return so that we have a silent fail and just 
re-render the
                        // page
-                       log.info("component not enabled or visible; ignoring 
call. Component: " + component);
+                       log.warn("component not enabled or visible; ignoring 
call. Component: " + component);
                        return;
                }
 
@@ -179,7 +179,7 @@ public class RequestListenerInterface
                try
                {
                        // Invoke the interface method on the component
-                       method.invoke(component, new Object[] {});
+                       method.invoke(component, new Object[] { });
                }
                catch (InvocationTargetException e)
                {

Modified: 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java?rev=1022625&r1=1022624&r2=1022625&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java
 (original)
+++ 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java
 Thu Oct 14 17:40:43 2010
@@ -26,6 +26,8 @@ import org.apache.wicket.behavior.IBehav
 import org.apache.wicket.behavior.IBehaviorListener;
 import org.apache.wicket.protocol.http.PageExpiredException;
 import org.apache.wicket.request.RequestParameters;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Target that denotes a page instance and a call to a component on that page 
using an listener
@@ -35,6 +37,8 @@ import org.apache.wicket.request.Request
  */
 public class BehaviorRequestTarget extends 
AbstractListenerInterfaceRequestTarget
 {
+       private static final Logger logger = 
LoggerFactory.getLogger(BehaviorRequestTarget.class);
+
        /**
         * Construct.
         * 
@@ -80,6 +84,14 @@ public class BehaviorRequestTarget exten
 
                // Get the IBehavior for the component based on the request 
parameters
                final Component component = getTarget();
+
+               if (!component.isVisibleInHierarchy() || 
!component.isEnabledInHierarchy())
+               {
+                       // ignore this request
+                       logger.warn("component not enabled or visible; ignoring 
call. Component: {}", component);
+                       return;
+               }
+
                final String id = getRequestParameters().getBehaviorId();
                if (id == null)
                {
@@ -89,6 +101,7 @@ public class BehaviorRequestTarget exten
                                        component.toString());
                }
 
+
                final int idAsInt = Integer.parseInt(id);
                final List<IBehavior> behaviors = 
component.getBehaviorsRawList();
                if (behaviors == null)
@@ -104,6 +117,16 @@ public class BehaviorRequestTarget exten
                        IBehavior behavior = behaviors.get(idAsInt);
                        if (behavior instanceof IBehaviorListener)
                        {
+
+                               if (!behavior.isEnabled(component))
+                               {
+                                       // ignore this request
+                                       logger.warn(
+                                               "behavior not enabled; ignoring 
call. behavior: {} at index: {} on component: {}",
+                                               new Object[] { behavior, 
idAsInt, component });
+                                       return;
+                               }
+
                                behaviorListener = (IBehaviorListener)behavior;
                        }
                }


Reply via email to