Author: husted
Date: Tue Feb 7 07:25:16 2006
New Revision: 375627
URL: http://svn.apache.org/viewcvs?rev=375627&view=rev
Log:
CheckStyle Issues
* Conform JavaDoc so that automatic reformatting will not collapse unordered
lists
* Apply Jalopy prior to check-in
Modified:
struts/action/trunk/src/java/org/apache/struts/action/Action.java
struts/action/trunk/src/java/org/apache/struts/action/ActionErrors.java
struts/action/trunk/src/java/org/apache/struts/action/ActionForm.java
struts/action/trunk/src/java/org/apache/struts/action/ActionFormBean.java
struts/action/trunk/src/java/org/apache/struts/action/ActionForward.java
struts/action/trunk/src/java/org/apache/struts/action/ActionMapping.java
struts/action/trunk/src/java/org/apache/struts/action/ActionMessage.java
struts/action/trunk/src/java/org/apache/struts/action/ActionMessages.java
struts/action/trunk/src/java/org/apache/struts/action/ActionRedirect.java
struts/action/trunk/src/java/org/apache/struts/action/ActionServlet.java
struts/action/trunk/src/java/org/apache/struts/action/DynaActionForm.java
struts/action/trunk/src/java/org/apache/struts/action/DynaActionFormClass.java
struts/action/trunk/src/java/org/apache/struts/action/ExceptionHandler.java
struts/action/trunk/src/java/org/apache/struts/action/PlugIn.java
struts/action/trunk/src/java/org/apache/struts/action/RequestProcessor.java
Modified: struts/action/trunk/src/java/org/apache/struts/action/Action.java
URL:
http://svn.apache.org/viewcvs/struts/action/trunk/src/java/org/apache/struts/action/Action.java?rev=375627&r1=375626&r2=375627&view=diff
==============================================================================
--- struts/action/trunk/src/java/org/apache/struts/action/Action.java (original)
+++ struts/action/trunk/src/java/org/apache/struts/action/Action.java Tue Feb
7 07:25:16 2006
@@ -30,6 +30,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
+
import java.util.Locale;
/**
@@ -39,22 +40,29 @@
* select an appropriate Action for each request, create an instance (if
* necessary), and call the <code>execute</code> method.</p>
*
- * <p>Actions must be programmed in a thread-safe manner, because the
controller
- * will share the same instance for multiple simultaneous requests. This means
- * you should design with the following items in mind: </p> <ul> <li>Instance
- * and static variables MUST NOT be used to store information related to the
- * state of a particular request. They MAY be used to share global resources
- * across requests for the same action.</li> <li>Access to other resources
- * (JavaBeans, session variables, etc.) MUST be synchronized if those resources
- * require protection. (Generally, however, resource classes should be designed
- * to provide their own protection where necessary.</li> </ul>
+ * <p>Actions must be programmed in a thread-safe manner, because the
+ * controller will share the same instance for multiple simultaneous requests.
+ * This means you should design with the following items in mind: </p>
+ *
+ * <ul>
+ *
+ * <li>Instance and static variables MUST NOT be used to store information
+ * related to the state of a particular request. They MAY be used to share
+ * global resources across requests for the same action.</li>
+ *
+ * <li>Access to other resources (JavaBeans, session variables, etc.) MUST be
+ * synchronized if those resources require protection. (Generally, however,
+ * resource classes should be designed to provide their own protection where
+ * necessary.</li>
*
- * <p>When an <code>Action</code> instance is first created, the controller
will
- * call <code>setServlet</code> with a non-null argument to identify the
servlet
- * instance to which this Action is attached. When the servlet is to be shut
- * down (or restarted), the <code>setServlet</code> method will be called with
a
- * <code>null</code> argument, which can be used to clean up any allocated
- * resources in use by this Action.</p>
+ * </ul>
+ *
+ * <p>When an <code>Action</code> instance is first created, the controller
+ * will call <code>setServlet</code> with a non-null argument to identify the
+ * servlet instance to which this Action is attached. When the servlet is to
+ * be shut down (or restarted), the <code>setServlet</code> method will be
+ * called with a <code>null</code> argument, which can be used to clean up any
+ * allocated resources in use by this Action.</p>
*
* @version $Rev$ $Date: 2005-08-26 21:58:39 -0400 (Fri, 26 Aug 2005)
* $
@@ -89,8 +97,8 @@
/**
* <p>Set the servlet instance to which we are attached (if
- * <code>servlet</code> is non-null), or release any allocated resources
(if
- * <code>servlet</code> is null).</p>
+ * <code>servlet</code> is non-null), or release any allocated resources
+ * (if <code>servlet</code> is null).</p>
*
* @param servlet The new controller servlet, if any
*/
@@ -105,13 +113,13 @@
/**
* <p>Process the specified non-HTTP request, and create the corresponding
* non-HTTP response (or forward to another web component that will create
- * it), with provision for handling exceptions thrown by the business
logic.
- * Return an [EMAIL PROTECTED] ActionForward} instance describing where
and how control
- * should be forwarded, or <code>null</code> if the response has already
- * been completed.</p>
+ * it), with provision for handling exceptions thrown by the business
+ * logic. Return an [EMAIL PROTECTED] ActionForward} instance describing
where and
+ * how control should be forwarded, or <code>null</code> if the response
+ * has already been completed.</p>
*
- * <p>The default implementation attempts to forward to the HTTP version of
- * this method.</p>
+ * <p>The default implementation attempts to forward to the HTTP version
+ * of this method.</p>
*
* @param mapping The ActionMapping used to select this instance
* @param form The optional ActionForm bean for this request (if any)
@@ -119,28 +127,29 @@
* @param response The non-HTTP response we are creating
* @return The forward to which control should be transferred, or
* <code>null</code> if the response has been completed.
- * @throws Exception if the application business logic throws an exception.
+ * @throws Exception if the application business logic throws an
+ * exception.
* @since Struts 1.1
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
- ServletRequest request,
- ServletResponse response)
- throws Exception {
+ ServletRequest request, ServletResponse response)
+ throws Exception {
try {
return execute(mapping, form, (HttpServletRequest) request,
- (HttpServletResponse) response);
- } catch (ClassCastException e) {
+ (HttpServletResponse) response);
+ }
+ catch (ClassCastException e) {
return null;
}
}
/**
- * <p>Process the specified HTTP request, and create the corresponding HTTP
- * response (or forward to another web component that will create it), with
- * provision for handling exceptions thrown by the business logic. Return
an
- * [EMAIL PROTECTED] ActionForward} instance describing where and how
control should be
- * forwarded, or <code>null</code> if the response has already been
- * completed.</p>
+ * <p>Process the specified HTTP request, and create the corresponding
+ * HTTP response (or forward to another web component that will create
+ * it), with provision for handling exceptions thrown by the business
+ * logic. Return an [EMAIL PROTECTED] ActionForward} instance describing
where and
+ * how control should be forwarded, or <code>null</code> if the response
+ * has already been completed.</p>
*
* @param mapping The ActionMapping used to select this instance
* @param form The optional ActionForm bean for this request (if any)
@@ -148,13 +157,13 @@
* @param response The HTTP response we are creating
* @return The forward to which control should be transferred, or
* <code>null</code> if the response has been completed.
- * @throws Exception if the application business logic throws an exception
+ * @throws Exception if the application business logic throws an
+ * exception
* @since Struts 1.1
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
- HttpServletRequest request,
- HttpServletResponse response)
- throws Exception {
+ HttpServletRequest request, HttpServletResponse response)
+ throws Exception {
return null;
}
@@ -162,16 +171,16 @@
/**
* Adds the specified messages keys into the appropriate request attribute
- * for use by the <html:messages> tag (if messages="true" is set), if
- * any messages are required. Initialize the attribute if it has not
already
- * been. Otherwise, ensure that the request attribute is not set.
+ * for use by the <html:messages> tag (if messages="true" is set),
+ * if any messages are required. Initialize the attribute if it has not
+ * already been. Otherwise, ensure that the request attribute is not set.
*
* @param request The servlet request we are processing
* @param messages Messages object
* @since Struts 1.2.1
*/
protected void addMessages(HttpServletRequest request,
- ActionMessages messages) {
+ ActionMessages messages) {
if (messages == null) {
// bad programmer! *slap*
return;
@@ -179,7 +188,7 @@
// get any existing messages from the request, or make a new one
ActionMessages requestMessages =
- (ActionMessages) request.getAttribute(Globals.MESSAGE_KEY);
+ (ActionMessages) request.getAttribute(Globals.MESSAGE_KEY);
if (requestMessages == null) {
requestMessages = new ActionMessages();
@@ -200,8 +209,8 @@
}
/**
- * Adds the specified errors keys into the appropriate request attribute
for
- * use by the <html:errors> tag, if any messages are required.
+ * Adds the specified errors keys into the appropriate request attribute
+ * for use by the <html:errors> tag, if any messages are required.
* Initialize the attribute if it has not already been. Otherwise, ensure
* that the request attribute is not set.
*
@@ -209,8 +218,7 @@
* @param errors Errors object
* @since Struts 1.2.1
*/
- protected void addErrors(HttpServletRequest request,
- ActionMessages errors) {
+ protected void addErrors(HttpServletRequest request, ActionMessages
errors) {
if (errors == null) {
// bad programmer! *slap*
return;
@@ -218,7 +226,7 @@
// get any existing errors from the request, or make a new one
ActionMessages requestErrors =
- (ActionMessages) request.getAttribute(Globals.ERROR_KEY);
+ (ActionMessages) request.getAttribute(Globals.ERROR_KEY);
if (requestErrors == null) {
requestErrors = new ActionMessages();
@@ -250,10 +258,10 @@
}
/**
- * Retrieves any existing errors placed in the request by previous actions.
- * This method could be called instead of creating a <code>new
- * ActionMessages()</code> at the beginning of an <code>Action</code>. This
- * will prevent saveErrors() from wiping out any existing Errors
+ * Retrieves any existing errors placed in the request by previous
+ * actions. This method could be called instead of creating a <code>new
+ * ActionMessages()</code> at the beginning of an <code>Action</code>.
+ * This will prevent saveErrors() from wiping out any existing Errors
*
* @param request The servlet request we are processing
* @return the Errors that already exist in the request, or a new
@@ -262,7 +270,7 @@
*/
protected ActionMessages getErrors(HttpServletRequest request) {
ActionMessages errors =
- (ActionMessages) request.getAttribute(Globals.ERROR_KEY);
+ (ActionMessages) request.getAttribute(Globals.ERROR_KEY);
if (errors == null) {
errors = new ActionMessages();
@@ -282,10 +290,10 @@
}
/**
- * Retrieves any existing messages placed in the request by previous
+ * <p> Retrieves any existing messages placed in the request by previous
* actions. This method could be called instead of creating a <code>new
* ActionMessages()</code> at the beginning of an <code>Action</code> This
- * will prevent saveMessages() from wiping out any existing Messages
+ * will prevent saveMessages() from wiping out any existing Messages </p>
*
* @param request The servlet request we are processing
* @return the Messages that already exist in the request, or a new
@@ -294,7 +302,7 @@
*/
protected ActionMessages getMessages(HttpServletRequest request) {
ActionMessages messages =
- (ActionMessages) request.getAttribute(Globals.MESSAGE_KEY);
+ (ActionMessages) request.getAttribute(Globals.MESSAGE_KEY);
if (messages == null) {
messages = new ActionMessages();
@@ -311,40 +319,38 @@
* @since Struts 1.1
*/
protected MessageResources getResources(HttpServletRequest request) {
- return ((MessageResources) request
- .getAttribute(Globals.MESSAGES_KEY));
+ return ((MessageResources) request.getAttribute(Globals.MESSAGES_KEY));
}
/**
* <p>Return the specified message resources for the current module.</p>
*
* @param request The servlet request we are processing
- * @param key The key specified in the message-resources
- * element for the requested bundle.
+ * @param key The key specified in the message-resources element for
+ * the requested bundle.
* @return The specified message resource for the current module.
* @since Struts 1.1
*/
protected MessageResources getResources(HttpServletRequest request,
- String key) {
+ String key) {
// Identify the current module
ServletContext context = getServlet().getServletContext();
ModuleConfig moduleConfig =
- ModuleUtils.getInstance().getModuleConfig(request,
- context);
+ ModuleUtils.getInstance().getModuleConfig(request, context);
// Return the requested message resources instance
return (MessageResources) context.getAttribute(key
- + moduleConfig.getPrefix());
+ + moduleConfig.getPrefix());
}
/**
* <p>Returns <code>true</code> if the current form's cancel button was
- * pressed. This method will check if the <code>Globals.CANCEL_KEY</code>
+ * pressed. This method will check if the <code>Globals.CANCEL_KEY</code>
* request attribute has been set, which normally occurs if the cancel
- * button generated by <strong>CancelTag</strong> was pressed by the user
in
- * the current request. If <code>true</code>, validation performed by an
- * <strong>ActionForm</strong>'s <code>validate()</code> method will have
- * been skipped by the controller servlet.</p>
+ * button generated by <strong>CancelTag</strong> was pressed by the user
+ * in the current request. If <code>true</code>, validation performed by
+ * an <strong>ActionForm</strong>'s <code>validate()</code> method will
+ * have been skipped by the controller servlet.</p>
*
* @param request The servlet request we are processing
* @return <code>true</code> if the cancel button was pressed;
@@ -355,14 +361,14 @@
}
/**
- * <p>Return <code>true</code> if there is a transaction token stored in
the
- * user's current session, and the value submitted as a request parameter
- * with this action matches it. Returns <code>false</code> under any of the
- * following circumstances:</p> <ul> <li>No session associated with this
- * request</li> <li>No transaction token saved in the session</li> <li>No
- * transaction token included as a request parameter</li> <li>The included
- * transaction token value does not match the transaction token in the
- * user's session</li> </ul>
+ * <p>Return <code>true</code> if there is a transaction token stored in
+ * the user's current session, and the value submitted as a request
+ * parameter with this action matches it. Returns <code>false</code> under
+ * any of the following circumstances:</p> <ul> <li>No session associated
+ * with this request</li> <li>No transaction token saved in the
+ * session</li> <li>No transaction token included as a request
+ * parameter</li> <li>The included transaction token value does not match
+ * the transaction token in the user's session</li> </ul>
*
* @param request The servlet request we are processing
* @return <code>true</code> if there is a transaction token and it is
@@ -373,22 +379,21 @@
}
/**
- * <p>Return <code>true</code> if there is a transaction token stored in
the
- * user's current session, and the value submitted as a request parameter
- * with this action matches it. Returns <code>false</code> under any of the
- * following circumstances:</p> <ul> <li>No session associated with this
- * request</li> <li>No transaction token saved in the session</li> <li>No
- * transaction token included as a request parameter</li> <li>The included
- * transaction token value does not match the transaction token in the
- * user's session</li> </ul>
+ * <p>Return <code>true</code> if there is a transaction token stored in
+ * the user's current session, and the value submitted as a request
+ * parameter with this action matches it. Returns <code>false</code> under
+ * any of the following circumstances:</p> <ul> <li>No session associated
+ * with this request</li> <li>No transaction token saved in the
+ * session</li> <li>No transaction token included as a request
+ * parameter</li> <li>The included transaction token value does not match
+ * the transaction token in the user's session</li> </ul>
*
* @param request The servlet request we are processing
* @param reset Should we reset the token after checking it?
* @return <code>true</code> if there is a transaction token and it is
* valid; <code>false</code> otherwise.
*/
- protected boolean isTokenValid(HttpServletRequest request,
- boolean reset) {
+ protected boolean isTokenValid(HttpServletRequest request, boolean reset) {
return token.isTokenValid(request, reset);
}
@@ -413,8 +418,7 @@
* @param errors Error messages object
* @since Struts 1.2
*/
- protected void saveErrors(HttpServletRequest request,
- ActionMessages errors) {
+ protected void saveErrors(HttpServletRequest request, ActionMessages
errors) {
// Remove any error messages attribute if none are required
if ((errors == null) || errors.isEmpty()) {
request.removeAttribute(Globals.ERROR_KEY);
@@ -428,17 +432,18 @@
/**
* <p>Save the specified messages keys into the appropriate request
- * attribute for use by the <html:messages> tag (if messages="true"
is
- * set), if any messages are required. Otherwise, ensure that the request
- * attribute is not created.</p>
+ * attribute for use by the <html:messages> tag (if messages="true"
+ * is set), if any messages are required. Otherwise, ensure that the
+ * request attribute is not created.</p>
*
* @param request The servlet request we are processing.
- * @param messages The messages to save. <code>null</code> or empty
messages
- * removes any existing ActionMessages in the request.
+ * @param messages The messages to save. <code>null</code> or empty
+ * messages removes any existing ActionMessages in the
+ * request.
* @since Struts 1.1
*/
protected void saveMessages(HttpServletRequest request,
- ActionMessages messages) {
+ ActionMessages messages) {
// Remove any messages attribute if none are required
if ((messages == null) || messages.isEmpty()) {
request.removeAttribute(Globals.MESSAGE_KEY);
@@ -452,17 +457,17 @@
/**
* <p>Save the specified messages keys into the appropriate session
- * attribute for use by the <html:messages> tag (if messages="true"
is
- * set), if any messages are required. Otherwise, ensure that the session
- * attribute is not created.</p>
+ * attribute for use by the <html:messages> tag (if messages="true"
+ * is set), if any messages are required. Otherwise, ensure that the
+ * session attribute is not created.</p>
*
* @param session The session to save the messages in.
- * @param messages The messages to save. <code>null</code> or empty
messages
- * removes any existing ActionMessages in the session.
+ * @param messages The messages to save. <code>null</code> or empty
+ * messages removes any existing ActionMessages in the
+ * session.
* @since Struts 1.2
*/
- protected void saveMessages(HttpSession session,
- ActionMessages messages) {
+ protected void saveMessages(HttpSession session, ActionMessages messages) {
// Remove any messages attribute if none are required
if ((messages == null) || messages.isEmpty()) {
session.removeAttribute(Globals.MESSAGE_KEY);
@@ -476,14 +481,14 @@
/**
* <p>Save the specified error messages keys into the appropriate session
- * attribute for use by the <html:messages> tag (if messages="false")
- * or <html:errors>, if any error messages are required. Otherwise,
- * ensure that the session attribute is empty.</p>
+ * attribute for use by the <html:messages> tag (if
+ * messages="false") or <html:errors>, if any error messages are
+ * required. Otherwise, ensure that the session attribute is empty.</p>
*
* @param session The session to save the error messages in.
* @param errors The error messages to save. <code>null</code> or empty
- * messages removes any existing error ActionMessages in the
- * session.
+ * messages removes any existing error ActionMessages in
+ * the session.
* @since Struts 1.3
*/
protected void saveErrors(HttpSession session, ActionMessages errors) {
@@ -499,8 +504,8 @@
}
/**
- * <p>Save a new transaction token in the user's current session, creating
a
- * new session if necessary.</p>
+ * <p>Save a new transaction token in the user's current session, creating
+ * a new session if necessary.</p>
*
* @param request The servlet request we are processing
*/
Modified:
struts/action/trunk/src/java/org/apache/struts/action/ActionErrors.java
URL:
http://svn.apache.org/viewcvs/struts/action/trunk/src/java/org/apache/struts/action/ActionErrors.java?rev=375627&r1=375626&r2=375627&view=diff
==============================================================================
--- struts/action/trunk/src/java/org/apache/struts/action/ActionErrors.java
(original)
+++ struts/action/trunk/src/java/org/apache/struts/action/ActionErrors.java Tue
Feb 7 07:25:16 2006
@@ -22,9 +22,9 @@
/**
* <p>A class that encapsulates the error messages being reported by the
* <code>validate()</code> method of an <code>ActionForm</code>. Validation
- * errors are either global to the entire <code>ActionForm</code> bean they are
- * associated with, or they are specific to a particular bean property (and,
- * therefore, a particular input field on the corresponding form).</p>
+ * errors are either global to the entire <code>ActionForm</code> bean they
+ * are associated with, or they are specific to a particular bean property
+ * (and, therefore, a particular input field on the corresponding form).</p>
*
* <p>Each individual error is described by an <code>ActionMessage</code>
* object, which contains a message key (to be looked up in an appropriate
@@ -43,15 +43,15 @@
// --------------------------------------------------------- Public Methods
/**
- * Create an empty <code>ActionErrors</code> object.
+ * <p>Create an empty <code>ActionErrors</code> object.</p>
*/
public ActionErrors() {
super();
}
/**
- * Create an <code>ActionErrors</code> object initialized with the given
- * messages.
+ * <p>Create an <code>ActionErrors</code> object initialized with the
+ * given messages.</p>
*
* @param messages The messages to be initially added to this object. This
* parameter can be <code>null</code>.
Modified: struts/action/trunk/src/java/org/apache/struts/action/ActionForm.java
URL:
http://svn.apache.org/viewcvs/struts/action/trunk/src/java/org/apache/struts/action/ActionForm.java?rev=375627&r1=375626&r2=375627&view=diff
==============================================================================
--- struts/action/trunk/src/java/org/apache/struts/action/ActionForm.java
(original)
+++ struts/action/trunk/src/java/org/apache/struts/action/ActionForm.java Tue
Feb 7 07:25:16 2006
@@ -21,6 +21,7 @@
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
+
import java.io.Serializable;
/**
@@ -30,24 +31,26 @@
* corresponding <code>Action.execute</code> method is called.</p>
*
* <p>When the properties of this bean have been populated, but before the
- * <code>execute</code> method of the <code>Action</code> is called, this
bean's
- * <code>validate</code> method will be called, which gives the bean a chance
to
- * verify that the properties submitted by the user are correct and valid. If
- * this method finds problems, it returns an error messages object that
- * encapsulates those problems, and the controller servlet will return control
- * to the corresponding input form. Otherwise, the <code>validate</code> method
- * returns <code>null</code>, indicating that everything is acceptable and the
- * corresponding <code>Action.execute</code> method should be called.</p>
+ * <code>execute</code> method of the <code>Action</code> is called, this
+ * bean's <code>validate</code> method will be called, which gives the bean a
+ * chance to verify that the properties submitted by the user are correct and
+ * valid. If this method finds problems, it returns an error messages object
+ * that encapsulates those problems, and the controller servlet will return
+ * control to the corresponding input form. Otherwise, the
+ * <code>validate</code> method returns <code>null</code>, indicating that
+ * everything is acceptable and the corresponding <code>Action.execute</code>
+ * method should be called.</p>
*
* <p>This class must be subclassed in order to be instantiated. Subclasses
* should provide property getter and setter methods for all of the bean
- * properties they wish to expose, plus override any of the public or protected
- * methods for which they wish to provide modified functionality. </p>
+ * properties they wish to expose, plus override any of the public or
+ * protected methods for which they wish to provide modified functionality.
+ * </p>
*
* <p>Because ActionForms are JavaBeans, subclasses should also implement
* <code>Serializable</code>, as required by the JavaBean specification. Some
- * containers require that an object meet all JavaBean requirements in order to
- * use the introspection API upon which ActionForms rely.</p>
+ * containers require that an object meet all JavaBean requirements in order
+ * to use the introspection API upon which ActionForms rely.</p>
*
* @version $Rev$ $Date: 2005-11-12 08:14:24 -0500 (Sat, 12 Nov 2005)
* $
@@ -78,8 +81,8 @@
}
/**
- * <p>Return the controller servlet instance to which we are attached. as
an
- * <code>ActionServletWrapper</code>.</p>
+ * <p>Return the controller servlet instance to which we are attached. as
+ * an <code>ActionServletWrapper</code>.</p>
*
* @return An instance of [EMAIL PROTECTED] ActionServletWrapper}
* @see ActionServletWrapper
@@ -98,8 +101,8 @@
* <code>null</code> if this form's enctype is not "multipart/form-data".
* </p>
*
- * @return The [EMAIL PROTECTED]
org.apache.struts.upload.MultipartRequestHandler} for
- * this form.
+ * @return The [EMAIL PROTECTED]
org.apache.struts.upload.MultipartRequestHandler}
+ * for this form.
* @see org.apache.struts.upload.MultipartRequestHandler
*/
public MultipartRequestHandler getMultipartRequestHandler() {
@@ -124,19 +127,19 @@
* @param multipartRequestHandler The Handler to use for fileuploads.
*/
public void setMultipartRequestHandler(
- MultipartRequestHandler multipartRequestHandler) {
+ MultipartRequestHandler multipartRequestHandler) {
this.multipartRequestHandler = multipartRequestHandler;
}
// --------------------------------------------------------- Public Methods
/**
- * <p>>Can be used to reset all bean properties to their default state.
This
- * method is called before the properties are repopulated by the
+ * <p>>Can be used to reset all bean properties to their default state.
+ * This method is called before the properties are repopulated by the
* controller.</p>
*
- * <p>The default implementation attempts to forward to the HTTP version of
- * this method.</p>
+ * <p>The default implementation attempts to forward to the HTTP version
+ * of this method.</p>
*
* @param mapping The mapping used to select this instance
* @param request The servlet request we are processing
@@ -144,7 +147,8 @@
public void reset(ActionMapping mapping, ServletRequest request) {
try {
reset(mapping, (HttpServletRequest) request);
- } catch (ClassCastException e) {
+ }
+ catch (ClassCastException e) {
; // FIXME: Why would this ever happen except a null
}
}
@@ -155,22 +159,23 @@
* the controller.</p>
*
* <p>The default implementation does nothing. In practice, the only
- * properties that need to be reset are those which represent checkboxes on
- * a session-scoped form. Otherwise, properties can be given initial values
- * where the field is declared. </p>
- *
- * <p>If the form is stored in session-scope so that values can be
collected
- * over multiple requests (a "wizard"), you must be very careful of which
- * properties, if any, are reset. As mentioned, session-scope checkboxes
- * must be reset to false for any page where this property is set. This is
- * because the client does not submit a checkbox value when it is clear
- * (false). If a session-scoped checkbox is not proactively reset, it can
- * never be set to false.</p>
+ * properties that need to be reset are those which represent checkboxes
+ * on a session-scoped form. Otherwise, properties can be given initial
+ * values where the field is declared. </p>
+ *
+ * <p>If the form is stored in session-scope so that values can be
+ * collected over multiple requests (a "wizard"), you must be very careful
+ * of which properties, if any, are reset. As mentioned, session-scope
+ * checkboxes must be reset to false for any page where this property is
+ * set. This is because the client does not submit a checkbox value when
+ * it is clear (false). If a session-scoped checkbox is not proactively
+ * reset, it can never be set to false.</p>
*
* <p>This method is <strong>not</strong> the appropriate place to
- * initialize form value for an "update" type page (this should be done in
a
- * setup Action). You mainly need to worry about setting checkbox values to
- * false; most of the time you can leave this method unimplemented. </p>
+ * initialize form value for an "update" type page (this should be done in
+ * a setup Action). You mainly need to worry about setting checkbox values
+ * to false; most of the time you can leave this method unimplemented.
+ * </p>
*
* @param mapping The mapping used to select this instance
* @param request The servlet request we are processing
@@ -182,23 +187,23 @@
/**
* <p>Can be used to validate the properties that have been set for this
* non-HTTP request, and return an <code>ActionErrors</code> object that
- * encapsulates any validation errors that have been found. If no errors
are
- * found, return <code>null</code> or an <code>ActionErrors</code> object
- * with no recorded error messages.</p>
+ * encapsulates any validation errors that have been found. If no errors
+ * are found, return <code>null</code> or an <code>ActionErrors</code>
+ * object with no recorded error messages.</p>
*
- * <p>The default implementation attempts to forward to the HTTP version of
- * this method.</p>
+ * <p>The default implementation attempts to forward to the HTTP version
+ * of this method.</p>
*
* @param mapping The mapping used to select this instance
* @param request The servlet request we are processing
- * @return The set of validation errors, if validation failed; an empty set
- * or <code>null</code> if validation succeeded.
+ * @return The set of validation errors, if validation failed; an empty
+ * set or <code>null</code> if validation succeeded.
*/
- public ActionErrors validate(ActionMapping mapping,
- ServletRequest request) {
+ public ActionErrors validate(ActionMapping mapping, ServletRequest
request) {
try {
return (validate(mapping, (HttpServletRequest) request));
- } catch (ClassCastException e) {
+ }
+ catch (ClassCastException e) {
return (null);
}
}
@@ -206,9 +211,9 @@
/**
* <p>Can be used to validate the properties that have been set for this
* HTTP request, and return an <code>ActionErrors</code> object that
- * encapsulates any validation errors that have been found. If no errors
are
- * found, return <code>null</code> or an <code>ActionErrors</code> object
- * with no recorded error messages.</p>
+ * encapsulates any validation errors that have been found. If no errors
+ * are found, return <code>null</code> or an <code>ActionErrors</code>
+ * object with no recorded error messages.</p>
*
* <p>The default implementation performs no validation and returns
* <code>null</code>. Subclasses must override this method to provide any
@@ -216,12 +221,12 @@
*
* @param mapping The mapping used to select this instance
* @param request The servlet request we are processing
- * @return The set of validation errors, if validation failed; an empty set
- * or <code>null</code> if validation succeeded.
+ * @return The set of validation errors, if validation failed; an empty
+ * set or <code>null</code> if validation succeeded.
* @see DynaActionForm
*/
public ActionErrors validate(ActionMapping mapping,
- HttpServletRequest request) {
+ HttpServletRequest request) {
return (null);
}
}
Modified:
struts/action/trunk/src/java/org/apache/struts/action/ActionFormBean.java
URL:
http://svn.apache.org/viewcvs/struts/action/trunk/src/java/org/apache/struts/action/ActionFormBean.java?rev=375627&r1=375626&r2=375627&view=diff
==============================================================================
--- struts/action/trunk/src/java/org/apache/struts/action/ActionFormBean.java
(original)
+++ struts/action/trunk/src/java/org/apache/struts/action/ActionFormBean.java
Tue Feb 7 07:25:16 2006
@@ -28,9 +28,10 @@
* <p>Since Struts 1.1 <code>ActionFormBean</code> extends
* <code>FormBeanConfig</code>.</p>
*
- * <p><strong>NOTE</strong> - This class would have been deprecated and
replaced
- * by <code>org.apache.struts.config.FormBeanConfig</code> except for the fact
- * that it is part of the public API that existing applications are using.</p>
+ * <p><strong>NOTE</strong> - This class would have been deprecated and
+ * replaced by <code>org.apache.struts.config.FormBeanConfig</code> except for
+ * the fact that it is part of the public API that existing applications are
+ * using.</p>
*
* @version $Rev$ $Date: 2005-05-14 01:09:32 -0400 (Sat, 14 May 2005)
* $
Modified:
struts/action/trunk/src/java/org/apache/struts/action/ActionForward.java
URL:
http://svn.apache.org/viewcvs/struts/action/trunk/src/java/org/apache/struts/action/ActionForward.java?rev=375627&r1=375626&r2=375627&view=diff
==============================================================================
--- struts/action/trunk/src/java/org/apache/struts/action/ActionForward.java
(original)
+++ struts/action/trunk/src/java/org/apache/struts/action/ActionForward.java
Tue Feb 7 07:25:16 2006
@@ -22,32 +22,40 @@
/**
* <p>An <strong>ActionForward</strong> represents a destination to which the
* controller, RequestProcessor, might be directed to perform a
- * RequestDispatcher.forward or HttpServletResponse.sendRedirect
- * to, as a result of processing activities of an Action class.
- * Instances of this class may be created dynamically as necessary, or
- * configured in association with an ActionMapping instance for
- * named lookup of potentially multiple destinations for a particular mapping
- * instance.</p>
- *
- * <p>An ActionForward has the following minimal set of properties.
- * Additional properties can be provided as needed by subclassses.</p> <ul>
- * <li><strong>contextRelative</strong> - Should the path value be
- * interpreted as context-relative (instead of module-relative, if it starts
- * with a '/' character? [false]</li> <li><strong>name</strong> - Logical name
- * by which this instance may be looked up in relationship to a particular
- * ActionMapping. </li> <li><strong>path</strong> - Module-relative
- * or context-relative URI to which control should be forwarded, or an absolute
- * or relative URI to which control should be redirected.</li>
- * <li><strong>redirect</strong> - Set to true if the controller
- * servlet should call HttpServletResponse.sendRedirect() on the
- * associated path; otherwise false. [false]</li> </ul>
- *
- * <p>Since Struts 1.1 this class extends ForwardConfig and
- * inherits the contextRelative property.
- *
- * <p><strong>NOTE</strong> - This class would have been deprecated and
replaced
- * by org.apache.struts.config.ForwardConfig except for the fact
- * that it is part of the public API that existing applications are using.</p>
+ * RequestDispatcher.forward or HttpServletResponse.sendRedirect to, as a
+ * result of processing activities of an Action class. Instances of this class
+ * may be created dynamically as necessary, or configured in association with
+ * an ActionMapping instance for named lookup of potentially multiple
+ * destinations for a particular mapping instance.</p>
+ *
+ * <p>An ActionForward has the following minimal set of properties. Additional
+ * properties can be provided as needed by subclassses.</p>
+ *
+ * <ul>
+ *
+ * <li><strong>contextRelative</strong> - Should the path value be interpreted
+ * as context-relative (instead of module-relative, if it starts with a '/'
+ * character? [false]</li>
+ *
+ * <li><strong>name</strong> - Logical name by which this instance may be
+ * looked up in relationship to a particular ActionMapping. </li>
+ *
+ * <li><strong>path</strong> - Module-relative or context-relative URI to
+ * which control should be forwarded, or an absolute or relative URI to which
+ * control should be redirected.</li>
+ *
+ * <li><strong>redirect</strong> - Set to true if the controller servlet
+ * should call HttpServletResponse.sendRedirect() on the associated path;
+ * otherwise false. [false]</li>
+ *
+ * </ul>
+ *
+ * <p>Since Struts 1.1 this class extends ForwardConfig and inherits the
+ * contextRelative property.
+ *
+ * <p><strong>NOTE</strong> - This class would have been deprecated and
+ * replaced by org.apache.struts.config.ForwardConfig except for the fact that
+ * it is part of the public API that existing applications are using.</p>
*
* @version $Rev$ $Date: 2005-08-14 17:24:39 -0400 (Sun, 14 Aug 2005)
* $
@@ -99,15 +107,16 @@
}
/**
- * Construct a new instance with the specified values.
+ * <p>Construct a new instance with the specified values.</p>
*
* @param name Name of this forward
- * @param path Path to which control should be forwarded or redirected
+ * @param path Path to which control should be forwarded or
+ * redirected
* @param redirect Should we do a redirect?
* @param module Module prefix, if any
*/
public ActionForward(String name, String path, boolean redirect,
- String module) {
+ String module) {
super();
setName(name);
setPath(path);
@@ -124,6 +133,6 @@
*/
public ActionForward(ActionForward copyMe) {
this(copyMe.getName(), copyMe.getPath(), copyMe.getRedirect(),
- copyMe.getModule());
+ copyMe.getModule());
}
}
Modified:
struts/action/trunk/src/java/org/apache/struts/action/ActionMapping.java
URL:
http://svn.apache.org/viewcvs/struts/action/trunk/src/java/org/apache/struts/action/ActionMapping.java?rev=375627&r1=375626&r2=375627&view=diff
==============================================================================
--- struts/action/trunk/src/java/org/apache/struts/action/ActionMapping.java
(original)
+++ struts/action/trunk/src/java/org/apache/struts/action/ActionMapping.java
Tue Feb 7 07:25:16 2006
@@ -27,17 +27,18 @@
/**
* <p>An <strong>ActionMapping</strong> represents the information that the
* controller, <code>RequestProcessor</code>, knows about the mapping of a
- * particular request to an instance of a particular <code>Action</code> class.
- * The <code>ActionMapping</code> instance used to select a particular
+ * particular request to an instance of a particular <code>Action</code>
+ * class. The <code>ActionMapping</code> instance used to select a particular
* <code>Action</code> is passed on to that <code>Action</code>, thereby
* providing access to any custom configuration information included with the
* <code>ActionMapping</code> object.</p>
*
* <p>Since Struts 1.1 this class extends <code>ActionConfig</code>.
*
- * <p><strong>NOTE</strong> - This class would have been deprecated and
replaced
- * by <code>org.apache.struts.config.ActionConfig</code> except for the fact
- * that it is part of the public API that existing applications are using.</p>
+ * <p><strong>NOTE</strong> - This class would have been deprecated and
+ * replaced by <code>org.apache.struts.config.ActionConfig</code> except for
+ * the fact that it is part of the public API that existing applications are
+ * using.</p>
*
* @version $Rev$ $Date: 2005-08-26 21:58:39 -0400 (Fri, 26 Aug 2005)
* $
@@ -54,8 +55,8 @@
* <p>Find and return the <code>ForwardConfig</code> instance defining how
* forwarding to the specified logical name should be handled. This is
* performed by checking local and then global configurations for the
- * specified forwarding configuration. If no forwarding configuration can
be
- * found, return <code>null</code>.</p>
+ * specified forwarding configuration. If no forwarding configuration can
+ * be found, return <code>null</code>.</p>
*
* @param forwardName Logical name of the forwarding instance to be
* returned
@@ -105,7 +106,8 @@
public ActionForward getInputForward() {
if (getModuleConfig().getControllerConfig().getInputForward()) {
return (findForward(getInput()));
- } else {
+ }
+ else {
return (new ActionForward(getInput()));
}
}
Modified:
struts/action/trunk/src/java/org/apache/struts/action/ActionMessage.java
URL:
http://svn.apache.org/viewcvs/struts/action/trunk/src/java/org/apache/struts/action/ActionMessage.java?rev=375627&r1=375626&r2=375627&view=diff
==============================================================================
--- struts/action/trunk/src/java/org/apache/struts/action/ActionMessage.java
(original)
+++ struts/action/trunk/src/java/org/apache/struts/action/ActionMessage.java
Tue Feb 7 07:25:16 2006
@@ -23,8 +23,8 @@
* <p>An encapsulation of an individual message returned by the
* <code>validate</code> method of an <code>ActionForm</code>, consisting of a
* message key (to be used to look up message text in an appropriate message
- * resources database) plus up to four placeholder objects that can be used for
- * parametric replacement in the message text.</p>
+ * resources database) plus up to four placeholder objects that can be used
+ * for parametric replacement in the message text.</p>
*
* @version $Rev$ $Date: 2005-05-14 01:09:32 -0400 (Sat, 14 May 2005)
* $
@@ -68,7 +68,7 @@
* @param value0 First replacement value
*/
public ActionMessage(String key, Object value0) {
- this(key, new Object[]{value0});
+ this(key, new Object[] { value0 });
}
/**
@@ -80,7 +80,7 @@
* @param value1 Second replacement value
*/
public ActionMessage(String key, Object value0, Object value1) {
- this(key, new Object[]{value0, value1});
+ this(key, new Object[] { value0, value1 });
}
/**
@@ -92,9 +92,8 @@
* @param value1 Second replacement value
* @param value2 Third replacement value
*/
- public ActionMessage(String key, Object value0, Object value1,
- Object value2) {
- this(key, new Object[]{value0, value1, value2});
+ public ActionMessage(String key, Object value0, Object value1, Object
value2) {
+ this(key, new Object[] { value0, value1, value2 });
}
/**
@@ -108,8 +107,8 @@
* @param value3 Fourth replacement value
*/
public ActionMessage(String key, Object value0, Object value1,
- Object value2, Object value3) {
- this(key, new Object[]{value0, value1, value2, value3});
+ Object value2, Object value3) {
+ this(key, new Object[] { value0, value1, value2, value3 });
}
/**
@@ -162,8 +161,8 @@
* <p>Indicate whether the key is taken to be as a bundle key [true] or
* literal value [false].</p>
*
- * @return <code>true</code> if the key is a bundle key; <code>false</code>
- * otherwise.
+ * @return <code>true</code> if the key is a bundle key;
+ * <code>false</code> otherwise.
*/
public boolean isResource() {
return (this.resource);
Modified:
struts/action/trunk/src/java/org/apache/struts/action/ActionMessages.java
URL:
http://svn.apache.org/viewcvs/struts/action/trunk/src/java/org/apache/struts/action/ActionMessages.java?rev=375627&r1=375626&r2=375627&view=diff
==============================================================================
--- struts/action/trunk/src/java/org/apache/struts/action/ActionMessages.java
(original)
+++ struts/action/trunk/src/java/org/apache/struts/action/ActionMessages.java
Tue Feb 7 07:25:16 2006
@@ -18,6 +18,7 @@
package org.apache.struts.action;
import java.io.Serializable;
+
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
@@ -26,8 +27,8 @@
import java.util.List;
/**
- * <p>A class that encapsulates messages. Messages can be either global or they
- * are specific to a particular bean property.</p>
+ * <p>A class that encapsulates messages. Messages can be either global or
+ * they are specific to a particular bean property.</p>
*
* <p>Each individual message is described by an <code>ActionMessage</code>
* object, which contains a message key (to be looked up in an appropriate
@@ -47,12 +48,13 @@
/**
* <p>Compares ActionMessageItem objects.</p>
*/
- private static final Comparator ACTION_ITEM_COMPARATOR = new Comparator() {
- public int compare(Object o1, Object o2) {
- return ((ActionMessageItem) o1).getOrder()
- - ((ActionMessageItem) o2).getOrder();
- }
- };
+ private static final Comparator ACTION_ITEM_COMPARATOR =
+ new Comparator() {
+ public int compare(Object o1, Object o2) {
+ return ((ActionMessageItem) o1).getOrder()
+ - ((ActionMessageItem) o2).getOrder();
+ }
+ };
// ----------------------------------------------------- Manifest Constants
@@ -61,7 +63,7 @@
* those related to a specific property.</p>
*/
public static final String GLOBAL_MESSAGE =
- "org.apache.struts.action.GLOBAL_MESSAGE";
+ "org.apache.struts.action.GLOBAL_MESSAGE";
// ----------------------------------------------------- Instance Variables
@@ -76,8 +78,9 @@
protected boolean accessed = false;
/**
- * <p>The accumulated set of <code>ActionMessage</code> objects
(represented
- * as an ArrayList) for each property, keyed by property name.</p>
+ * <p>The accumulated set of <code>ActionMessage</code> objects
+ * (represented as an ArrayList) for each property, keyed by property
+ * name.</p>
*/
protected HashMap messages = new HashMap();
@@ -111,8 +114,8 @@
/**
* <p>Add a message to the set of messages for the specified property. An
- * order of the property/key is maintained based on the initial addition of
- * the property/key.</p>
+ * order of the property/key is maintained based on the initial addition
+ * of the property/key.</p>
*
* @param property Property name (or ActionMessages.GLOBAL_MESSAGE)
* @param message The message to be added
@@ -126,7 +129,8 @@
item = new ActionMessageItem(list, iCount++, property);
messages.put(property, item);
- } else {
+ }
+ else {
list = item.getList();
}
@@ -134,15 +138,16 @@
}
/**
- * <p>Adds the messages from the given <code>ActionMessages</code> object
to
- * this set of messages. The messages are added in the order they are
- * returned from the <code>properties</code> method. If a message's
property
- * is already in the current <code>ActionMessages</code> object, it is
added
- * to the end of the list for that property. If a message's property is not
- * in the current list it is added to the end of the properties.</p>
+ * <p>Adds the messages from the given <code>ActionMessages</code> object
+ * to this set of messages. The messages are added in the order they are
+ * returned from the <code>properties</code> method. If a message's
+ * property is already in the current <code>ActionMessages</code> object,
+ * it is added to the end of the list for that property. If a message's
+ * property is not in the current list it is added to the end of the
+ * properties.</p>
*
- * @param actionMessages The <code>ActionMessages</code> object to be
added.
- * This parameter can be <code>null</code>.
+ * @param actionMessages The <code>ActionMessages</code> object to be
+ * added. This parameter can be <code>null</code>.
* @since Struts 1.1
*/
public void add(ActionMessages actionMessages) {
@@ -187,9 +192,9 @@
}
/**
- * <p>Return the set of all recorded messages, without distinction by which
- * property the messages are associated with. If there are no messages
- * recorded, an empty enumeration is returned.</p>
+ * <p>Return the set of all recorded messages, without distinction by
+ * which property the messages are associated with. If there are no
+ * messages recorded, an empty enumeration is returned.</p>
*
* @return An iterator over the messages for all properties.
*/
@@ -215,7 +220,7 @@
ActionMessageItem ami = (ActionMessageItem) i.next();
for (Iterator msgsIter = ami.getList().iterator();
- msgsIter.hasNext();) {
+ msgsIter.hasNext();) {
results.add(msgsIter.next());
}
}
@@ -237,7 +242,8 @@
if (item == null) {
return (Collections.EMPTY_LIST.iterator());
- } else {
+ }
+ else {
return (item.getList().iterator());
}
}
@@ -246,8 +252,8 @@
* <p>Returns <code>true</code> if the <code>get()</code> or
* <code>get(String)</code> methods are called.</p>
*
- * @return <code>true</code> if the messages have been accessed one or more
- * times.
+ * @return <code>true</code> if the messages have been accessed one or
+ * more times.
* @since Struts 1.2
*/
public boolean isAccessed() {
@@ -309,8 +315,8 @@
}
/**
- * <p>Return the number of messages associated with the specified property.
- * </p>
+ * <p>Return the number of messages associated with the specified
+ * property. </p>
*
* @param property Property name (or ActionMessages.GLOBAL_MESSAGE)
* @return The number of messages associated with the property.
Modified:
struts/action/trunk/src/java/org/apache/struts/action/ActionRedirect.java
URL:
http://svn.apache.org/viewcvs/struts/action/trunk/src/java/org/apache/struts/action/ActionRedirect.java?rev=375627&r1=375626&r2=375627&view=diff
==============================================================================
--- struts/action/trunk/src/java/org/apache/struts/action/ActionRedirect.java
(original)
+++ struts/action/trunk/src/java/org/apache/struts/action/ActionRedirect.java
Tue Feb 7 07:25:16 2006
@@ -30,10 +30,10 @@
import java.util.Map;
/**
- * A subclass of [EMAIL PROTECTED] ActionForward} which is designed for use in
redirecting
- * requests, with support for adding parameters at runtime. <br/> An [EMAIL
PROTECTED]
- * ForwardConfig} (or subclass) can be passed to the constructor to copy its
- * configuration: <br/>
+ * <p> A subclass of [EMAIL PROTECTED] ActionForward} which is designed for
use in
+ * redirecting requests, with support for adding parameters at runtime. <br/>
+ * An [EMAIL PROTECTED] ForwardConfig} (or subclass) can be passed to the
constructor to
+ * copy its configuration: </p> <p>
* <pre>
* public ActionForward execute(ActionMapping mapping,
* ActionForm form,
@@ -48,7 +48,7 @@
* return redirect;
* }
* </pre>
- * <p/>
+ * </p>
*
* @version $Rev$ $Date$
*/
@@ -116,8 +116,8 @@
* <p>Construct a new instance with a [EMAIL PROTECTED] ForwardConfig}
object to copy
* name, path, and contextRelative values from.</p>
*
- * @param baseConfig the [EMAIL PROTECTED] ForwardConfig} to copy
configuration values
- * from
+ * @param baseConfig the [EMAIL PROTECTED] ForwardConfig} to copy
configuration
+ * values from
*/
public ActionRedirect(ForwardConfig baseConfig) {
setName(baseConfig.getName());
@@ -166,21 +166,23 @@
if (currentValue == null) {
// there's no value for this param yet; add it to the map
parameterValues.put(fieldName, value);
- } else if (currentValue instanceof String) {
+ }
+ else if (currentValue instanceof String) {
// there's already a value; let's use an array for these parameters
String[] newValue = new String[2];
newValue[0] = (String) currentValue;
newValue[1] = value;
parameterValues.put(fieldName, newValue);
- } else if (currentValue instanceof String[]) {
+ }
+ else if (currentValue instanceof String[]) {
// add the value to the list of existing values
- List newValues = new ArrayList(Arrays.asList(
- (Object[]) currentValue));
+ List newValues =
+ new ArrayList(Arrays.asList((Object[]) currentValue));
newValues.add(value);
parameterValues.put(fieldName,
- newValues.toArray(new String[newValues.size()]));
+ newValues.toArray(new String[newValues.size()]));
}
}
@@ -218,9 +220,8 @@
if (paramStartIndex > 0) {
// did the path end with "?"?
- needsParamSeparator =
- (paramStartIndex != (originalPath.length()
- - 1));
+ needsParamSeparator = (paramStartIndex !=
(originalPath.length()
+ - 1));
if (needsParamSeparator) {
paramSeparator = "&";
@@ -260,7 +261,8 @@
if (value instanceof String) {
// just one value for this param
strParam.append(paramName).append("=").append(value);
- } else if (value instanceof String[]) {
+ }
+ else if (value instanceof String[]) {
// loop through all values for this param
String[] values = (String[]) value;
@@ -294,8 +296,7 @@
result.append("ActionRedirect [");
result.append("originalPath=").append(getOriginalPath()).append(";");
- result.append("parameterString=").append(getParameterString())
- .append("]");
+
result.append("parameterString=").append(getParameterString()).append("]");
return result.toString();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]