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;
}
}