You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@click.apache.org by sa...@apache.org on 2010/07/24 11:21:35 UTC
svn commit: r978834 - in
/click/trunk/click/framework/src/org/apache/click/control:
AbstractLink.java ActionButton.java ActionLink.java
Author: sabob
Date: Sat Jul 24 09:21:33 2010
New Revision: 978834
URL: http://svn.apache.org/viewvc?rev=978834&view=rev
Log:
without stateful pages we can revert CLK-685
Modified:
click/trunk/click/framework/src/org/apache/click/control/AbstractLink.java
click/trunk/click/framework/src/org/apache/click/control/ActionButton.java
click/trunk/click/framework/src/org/apache/click/control/ActionLink.java
Modified: click/trunk/click/framework/src/org/apache/click/control/AbstractLink.java
URL: http://svn.apache.org/viewvc/click/trunk/click/framework/src/org/apache/click/control/AbstractLink.java?rev=978834&r1=978833&r2=978834&view=diff
==============================================================================
--- click/trunk/click/framework/src/org/apache/click/control/AbstractLink.java (original)
+++ click/trunk/click/framework/src/org/apache/click/control/AbstractLink.java Sat Jul 24 09:21:33 2010
@@ -270,9 +270,6 @@ public abstract class AbstractLink exten
* Return the link request parameter value for the given name, or null if
* the parameter value does not exist.
*
- * @deprecated use {@link org.apache.click.Context#getRequestParameter(java.lang.String)}
- * instead
- *
* @param name the name of request parameter
* @return the link request parameter value
*/
@@ -339,9 +336,6 @@ public abstract class AbstractLink exten
* Return the link request parameter values for the given name, or null if
* the parameter values does not exist.
*
- * @deprecated use {@link org.apache.click.Context#getRequestParameterValues(java.lang.String)}
- * instead
- *
* @param name the name of request parameter
* @return the link request parameter values
*/
@@ -386,9 +380,6 @@ public abstract class AbstractLink exten
/**
* Return the AbstractLink parameters Map.
*
- * @deprecated use {@link org.apache.click.Context#getRequestParameter(java.lang.String)}
- * instead
- *
* @return the AbstractLink parameters Map
*/
public Map<String, Object> getParameters() {
@@ -399,6 +390,42 @@ public abstract class AbstractLink exten
}
/**
+ * Set the AbstractLink parameter map.
+ *
+ * @param parameters the link parameter map
+ */
+ public void setParameters(Map parameters) {
+ this.parameters = parameters;
+ }
+
+ /**
+ * Defines a link parameter that will have its value bound to a matching
+ * request parameter. {@link #setParameter(java.lang.String, java.lang.Object) setParameter}
+ * implicitly defines a parameter as well.
+ * <p/>
+ * <b>Please note:</b> parameters need only be defined for Ajax requests.
+ * For non-Ajax requests, <tt>all</tt> incoming request parameters
+ * are bound, whether they are defined or not. This behavior may change in a
+ * future release.
+ * <p/>
+ * <b>Also note:</b> link parameters are bound to request parameters
+ * during the {@link #onProcess()} event, so link parameters must be defined
+ * in the Page constructor or <tt>onInit()</tt> event.
+ *
+ * @param name the name of the parameter to define
+ */
+ public void defineParameter(String name) {
+ if (name == null) {
+ throw new IllegalArgumentException("Null name parameter");
+ }
+
+ Map<String, Object> localParameters = getParameters();
+ if (!localParameters.containsKey(name)) {
+ localParameters.put(name, null);
+ }
+ }
+
+ /**
* Return true if the AbstractLink has parameters, false otherwise.
*
* @return true if the AbstractLink has parameters, false otherwise
@@ -504,9 +531,9 @@ public abstract class AbstractLink exten
if (id != null) {
return context.getRequestParameter(id) != null;
} else {
- String name = getName();
- if (name != null) {
- return name.equals(context.getRequestParameter(ActionLink.ACTION_LINK));
+ String localName = getName();
+ if (localName != null) {
+ return localName.equals(context.getRequestParameter(ActionLink.ACTION_LINK));
}
}
return false;
@@ -677,17 +704,15 @@ public abstract class AbstractLink exten
/**
* This method binds the submitted request parameters to the link
* parameters.
- *
- * @deprecated binding link parameters can cause memory leaks, use
- * {@link org.apache.click.Context#getRequestParameter(java.lang.String)}
- * instead
+ * <p/>
+ * For non-Ajax requests this method will bind <tt>all</tt> incoming request
+ * parameters to the link. For Ajax requests this method will only bind
+ * the parameters already defined on the link.
*
* @param context the request context
*/
@SuppressWarnings("unchecked")
protected void bindRequestParameters(Context context) {
- // TODO: remove this method in a future release since it can lead to
- // memory leaks
HttpServletRequest request = context.getRequest();
Set<String> parameterNames = null;
@@ -700,10 +725,12 @@ public abstract class AbstractLink exten
for (String param : parameterNames) {
String[] values = request.getParameterValues(param);
- // Do not process parameters that are not defined as it would nullify
- // parameters that was explicitly set during Page.onInit. This only
- // occurs for Ajax requests which processes all parameters defined
- // on the link
+ // Do not process request parameters that return null values. Null
+ // values are only returned if the request parameter is not present.
+ // A null value can only occur for Ajax requests which processes
+ // parameters defined on the link, not the incoming parameters.
+ // The reason for not processing the null value is because it would
+ // nullify parametesr that was set during onInit
if (values == null) {
continue;
}
Modified: click/trunk/click/framework/src/org/apache/click/control/ActionButton.java
URL: http://svn.apache.org/viewvc/click/trunk/click/framework/src/org/apache/click/control/ActionButton.java?rev=978834&r1=978833&r2=978834&view=diff
==============================================================================
--- click/trunk/click/framework/src/org/apache/click/control/ActionButton.java (original)
+++ click/trunk/click/framework/src/org/apache/click/control/ActionButton.java Sat Jul 24 09:21:33 2010
@@ -304,9 +304,6 @@ public class ActionButton extends Button
* Return the button request parameter value for the given name, or null if
* the parameter value does not exist.
*
- * @deprecated use {@link org.apache.click.Context#getRequestParameter(java.lang.String)}
- * instead
- *
* @param name the name of request parameter
* @return the button request parameter value
*/
@@ -341,9 +338,6 @@ public class ActionButton extends Button
/**
* Return the ActionButton parameters Map.
*
- * @deprecated use {@link org.apache.click.Context#getRequestParameter(java.lang.String)}
- * instead
- *
* @return the ActionButton parameters Map
*/
public Map<String, Object> getParameters() {
@@ -354,6 +348,42 @@ public class ActionButton extends Button
}
/**
+ * Set the ActionButton parameter map.
+ *
+ * @param parameters the button parameter map
+ */
+ public void setParameters(Map parameters) {
+ this.parameters = parameters;
+ }
+
+ /**
+ * Defines a button parameter that will have its value bound to a matching
+ * request parameter. {@link #setParameter(java.lang.String, java.lang.Object) setParameter}
+ * implicitly defines a parameter as well.
+ * <p/>
+ * <b>Please note:</b> parameters need only be defined for Ajax requests.
+ * For non-Ajax requests, <tt>all</tt> incoming request parameters
+ * are bound, whether they are defined or not. This behavior may change in a
+ * future release.
+ * <p/>
+ * <b>Also note:</b> button parameters are bound to request parameters
+ * during the {@link #onProcess()} event, so button parameters must be defined
+ * in the Page constructor or <tt>onInit()</tt> event.
+ *
+ * @param name the name of the parameter to define
+ */
+ public void defineParameter(String name) {
+ if (name == null) {
+ throw new IllegalArgumentException("Null name parameter");
+ }
+
+ Map<String, Object> localParameters = getParameters();
+ if (!localParameters.containsKey(name)) {
+ localParameters.put(name, null);
+ }
+ }
+
+ /**
* Return true if the ActionButton has parameters or false otherwise.
*
* @return true if the ActionButton has parameters on false otherwise
@@ -487,12 +517,10 @@ public class ActionButton extends Button
clicked = getName().equals(context.getRequestParameter(ACTION_BUTTON));
if (clicked) {
- String value = context.getRequestParameter(VALUE);
- if (value != null) {
- setValue(value);
+ String localValue = context.getRequestParameter(VALUE);
+ if (localValue != null) {
+ setValue(localValue);
}
- // TODO refactor link not to bind parameters since it can lead to
- // memory leaks, especially when using Ajax. Remove the line below
bindRequestParameters(context);
}
}
@@ -567,17 +595,15 @@ public class ActionButton extends Button
/**
* This method binds the submitted request parameters to the buttons
* parameters.
- *
- * @deprecated binding button parameters can cause memory leaks, use
- * {@link org.apache.click.Context#getRequestParameter(java.lang.String)}
- * instead
+ * <p/>
+ * For non-Ajax requests this method will bind <tt>all</tt> incoming request
+ * parameters to the link. For Ajax requests this method will only bind
+ * the parameters already defined on the link.
*
* @param context the request context
*/
@SuppressWarnings("unchecked")
protected void bindRequestParameters(Context context) {
- // TODO: remove this method in a future release since it can lead to
- // memory leaks
HttpServletRequest request = context.getRequest();
Set<String> parameterNames = null;
@@ -590,10 +616,12 @@ public class ActionButton extends Button
for (String param : parameterNames) {
String[] values = request.getParameterValues(param);
- // Do not process parameters that are not defined as it would nullify
- // parameters that was explicitly set during Page.onInit. This only
- // occurs for Ajax requests which processes all parameters defined
- // on the link
+ // Do not process request parameters that return null values. Null
+ // values are only returned if the request parameter is not present.
+ // A null value can only occur for Ajax requests which processes
+ // parameters defined on the button, not the incoming parameters.
+ // The reason for not processing the null value is because it would
+ // nullify parametesr that was set during onInit
if (values == null) {
continue;
}
Modified: click/trunk/click/framework/src/org/apache/click/control/ActionLink.java
URL: http://svn.apache.org/viewvc/click/trunk/click/framework/src/org/apache/click/control/ActionLink.java?rev=978834&r1=978833&r2=978834&view=diff
==============================================================================
--- click/trunk/click/framework/src/org/apache/click/control/ActionLink.java (original)
+++ click/trunk/click/framework/src/org/apache/click/control/ActionLink.java Sat Jul 24 09:21:33 2010
@@ -490,8 +490,6 @@ public class ActionLink extends Abstract
if (value != null) {
setValue(value);
}
- // TODO refactor link not to bind parameters since it can lead to
- // memory leaks, especially when using Ajax. Remove the line below
bindRequestParameters(context);
}
}