You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by eh...@apache.org on 2007/06/05 17:27:39 UTC

svn commit: r544518 - /incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java

Author: ehillenius
Date: Tue Jun  5 08:27:38 2007
New Revision: 544518

URL: http://svn.apache.org/viewvc?view=rev&rev=544518
Log:
sorted members

Modified:
    incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java

Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java?view=diff&rev=544518&r1=544517&r2=544518
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java (original)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java Tue Jun  5 08:27:38 2007
@@ -78,6 +78,26 @@
 public abstract class FormComponent extends WebMarkupContainer implements IFormVisitorParticipant
 {
 	/**
+	 * Visitor for traversing form components
+	 */
+	public static abstract class AbstractVisitor implements IVisitor
+	{
+		/**
+		 * @see org.apache.wicket.markup.html.form.FormComponent.IVisitor#formComponent(org.apache.wicket.markup.html.form.FormComponent)
+		 */
+		public Object formComponent(IFormVisitorParticipant component)
+		{
+			if (component instanceof FormComponent)
+			{
+				onFormComponent((FormComponent)component);
+			}
+			return Component.IVisitor.CONTINUE_TRAVERSAL;
+		}
+
+		protected abstract void onFormComponent(FormComponent formComponent);
+	}
+
+	/**
 	 * Typesafe interface to code that is called when visiting a form component.
 	 */
 	public static interface IVisitor
@@ -93,23 +113,156 @@
 	}
 
 	/**
-	 * Visitor for traversing form components
+	 * {@link IErrorMessageSource} used for error messags against this form
+	 * components.
+	 * 
+	 * @author ivaynberg
 	 */
-	public static abstract class AbstractVisitor implements IVisitor
+	private class MessageSource implements IErrorMessageSource
 	{
+
 		/**
-		 * @see org.apache.wicket.markup.html.form.FormComponent.IVisitor#formComponent(org.apache.wicket.markup.html.form.FormComponent)
+		 * @see org.apache.wicket.validation.IErrorMessageSource#getMessage(java.lang.String)
 		 */
-		public Object formComponent(IFormVisitorParticipant component)
+		public String getMessage(String key)
 		{
-			if (component instanceof FormComponent)
+			final FormComponent formComponent = FormComponent.this;
+
+			// retrieve prefix that will be used to construct message keys
+			String prefix = formComponent.getValidatorKeyPrefix();
+			if (Strings.isEmpty(prefix))
 			{
-				onFormComponent((FormComponent)component);
+				prefix = "";
 			}
-			return Component.IVisitor.CONTINUE_TRAVERSAL;
+
+			final Localizer localizer = formComponent.getLocalizer();
+
+			String resource = prefix + getId() + "." + key;
+
+			// First use the parent for resolving so that
+			// form1.textfield1.Required can be used.
+
+			// Note: It is important that the default value of "" is provided
+			// to getString() not to throw a MissingResourceException or to
+			// return a default string like "[Warning: String ..."
+			String message = localizer.getString(resource, formComponent.getParent(), "");
+
+			// If not found, than ...
+			if (Strings.isEmpty(message))
+			{
+				// Try a variation of the resource key
+
+				resource = prefix + key;
+
+				message = localizer.getString(resource, formComponent.getParent(), "");
+			}
+
+			if (Strings.isEmpty(message))
+			{
+				// If still empty then use default
+
+				resource = prefix + getId() + "." + key;
+
+				// Note: It is important that the default value of "" is
+				// provided
+				// to getString() not to throw a MissingResourceException or to
+				// return a default string like "[Warning: String ..."
+				message = localizer.getString(resource, formComponent, "");
+
+				// If not found, than ...
+				if (Strings.isEmpty(message))
+				{
+					// Try a variation of the resource key
+
+					resource = prefix + key;
+
+					message = localizer.getString(resource, formComponent, "");
+				}
+			}
+
+			// convert empty string to null in case our default value of "" was
+			// returned from localizer
+			if (Strings.isEmpty(message))
+			{
+				message = null;
+			}
+			return message;
 		}
 
-		protected abstract void onFormComponent(FormComponent formComponent);
+		/**
+		 * @see org.apache.wicket.validation.IErrorMessageSource#substitute(java.lang.String,
+		 *      java.util.Map)
+		 */
+		public String substitute(String string, Map vars) throws IllegalStateException
+		{
+			return new MapVariableInterpolator(string, addDefaultVars(vars), true).toString();
+		}
+
+		/**
+		 * Creates a new params map that additionaly contains the default input,
+		 * name, label parameters
+		 * 
+		 * @param params
+		 *            original params map
+		 * @return new params map
+		 */
+		private Map addDefaultVars(Map params)
+		{
+			// create and fill the new params map
+			final HashMap fullParams;
+			if (params == null)
+			{
+				fullParams = new HashMap(6);
+			}
+			else
+			{
+				fullParams = new HashMap(params.size() + 6);
+				fullParams.putAll(params);
+			}
+
+			// add the input param if not already present
+			if (!fullParams.containsKey("input"))
+			{
+				fullParams.put("input", FormComponent.this.getInput());
+			}
+
+			// add the name param if not already present
+			if (!fullParams.containsKey("name"))
+			{
+				fullParams.put("name", FormComponent.this.getId());
+			}
+
+			// add the label param if not already present
+			if (!fullParams.containsKey("label"))
+			{
+				fullParams.put("label", getLabel());
+			}
+			return fullParams;
+		}
+
+
+		/**
+		 * @return value of label param for this form component
+		 */
+		private Object getLabel()
+		{
+			final FormComponent fc = FormComponent.this;
+			Object label = null;
+
+			// first try the label model ...
+			if (fc.getLabel() != null)
+			{
+				label = fc.getLabel().getObject();
+			}
+			// ... then try a resource of format [form-component-id] with
+			// default of '[form-component-id]'
+			if (label == null)
+			{
+
+				label = fc.getLocalizer().getString(fc.getId(), fc.getParent(), fc.getId());
+			}
+			return label;
+		}
 	}
 
 	/**
@@ -133,15 +286,40 @@
 	}
 
 	/**
-	 * The value separator
+	 * Adapter that makes this component appear as {@link IValidatable}
+	 * 
+	 * @author ivaynberg
 	 */
-	public static String VALUE_SEPARATOR = ";";
+	private class ValidatableAdapter implements IValidatable
+	{
+
+		/**
+		 * @see org.apache.wicket.validation.IValidatable#error(org.apache.wicket.validation.IValidationError)
+		 */
+		public void error(IValidationError error)
+		{
+			FormComponent.this.error(error);
+		}
+
+		/**
+		 * @see org.apache.wicket.validation.IValidatable#getValue()
+		 */
+		public Object getValue()
+		{
+			return FormComponent.this.getConvertedInput();
+		}
+
+		public boolean isValid()
+		{
+			return FormComponent.this.isValid();
+		}
+
+	}
 
 	/**
-	 * Make empty strings null values boolean. Used by AbstractTextComponent
-	 * subclass.
+	 * The value separator
 	 */
-	protected static final short FLAG_CONVERT_EMPTY_INPUT_STRING_TO_NULL = FLAG_RESERVED1;
+	public static String VALUE_SEPARATOR = ";";
 
 	private static final String[] EMPTY_STRING_ARRAY = new String[] { "" };
 
@@ -154,51 +332,117 @@
 	/** Whether or not this component's value is required (non-empty) */
 	private static final short FLAG_REQUIRED = FLAG_RESERVED3;
 
-	private static final String NO_RAW_INPUT = "[-NO-RAW-INPUT-]";
 
+	private static final String NO_RAW_INPUT = "[-NO-RAW-INPUT-]";
 
 	private static final long serialVersionUID = 1L;
 
-	private transient Object convertedInput;
-
 	/**
-	 * The value will be made available to the validator property by means of
-	 * ${label}. It does not have any specific meaning to FormComponent itself.
-	 */
-	private IModel labelModel = null;
-
-	/**
-	 * Raw Input entered by the user or NO_RAW_INPUT if nothing is filled in.
+	 * Make empty strings null values boolean. Used by AbstractTextComponent
+	 * subclass.
 	 */
-	private String rawInput = NO_RAW_INPUT;
+	protected static final short FLAG_CONVERT_EMPTY_INPUT_STRING_TO_NULL = FLAG_RESERVED1;
 
 	/**
-	 * Type that the raw input string will be converted to
+	 * Visits any form components inside component if it is a container, or
+	 * component itself if it is itself a form component
+	 * 
+	 * @param component
+	 *            starting point of the traversal
+	 * 
+	 * @param visitor
+	 *            The visitor to call
 	 */
-	private Class type;
+	public static final void visitFormComponentsPostOrder(Component component,
+			final FormComponent.IVisitor visitor)
+	{
+		if (visitor == null)
+		{
+			throw new IllegalArgumentException("Argument `visitor` cannot be null");
+		}
 
-	/**
-	 * The list of validators for this form component as either an IValidator
-	 * instance or an array of IValidator instances.
-	 */
-	private Object validators = null;
 
-	/**
-	 * @see org.apache.wicket.Component#Component(String)
-	 */
-	public FormComponent(final String id)
-	{
-		super(id);
-		// the form decides whether form components are versioned or not
-		// see Form.setVersioned
-		setVersioned(false);
+		visitFormComponentsPostOrderHelper(component, visitor);
 	}
 
-	/**
-	 * @see org.apache.wicket.Component#Component(String, IModel)
-	 */
-	public FormComponent(final String id, IModel model)
-	{
+	private static final Object visitFormComponentsPostOrderHelper(Component component,
+			final FormComponent.IVisitor visitor)
+	{
+		if (component instanceof MarkupContainer)
+		{
+			final MarkupContainer container = (MarkupContainer)component;
+			if (container.size() > 0)
+			{
+				boolean visitChildren = true;
+				if (container instanceof IFormVisitorParticipant)
+				{
+					visitChildren = ((IFormVisitorParticipant)container).processChildren();
+				}
+				if (visitChildren)
+				{
+					final Iterator children = container.iterator();
+					while (children.hasNext())
+					{
+						final Component child = (Component)children.next();
+						Object value = visitFormComponentsPostOrderHelper(child, visitor);
+						if (value == Component.IVisitor.STOP_TRAVERSAL)
+						{
+							return value;
+						}
+					}
+				}
+			}
+		}
+
+		if (component instanceof FormComponent)
+		{
+			final FormComponent fc = (FormComponent)component;
+			return visitor.formComponent(fc);
+		}
+
+		return null;
+	}
+
+	private transient Object convertedInput;
+
+	/**
+	 * The value will be made available to the validator property by means of
+	 * ${label}. It does not have any specific meaning to FormComponent itself.
+	 */
+	private IModel labelModel = null;
+
+	/**
+	 * Raw Input entered by the user or NO_RAW_INPUT if nothing is filled in.
+	 */
+	private String rawInput = NO_RAW_INPUT;
+
+	/**
+	 * Type that the raw input string will be converted to
+	 */
+	private Class type;
+
+	/**
+	 * The list of validators for this form component as either an IValidator
+	 * instance or an array of IValidator instances.
+	 */
+	private Object validators = null;
+
+	/**
+	 * @see org.apache.wicket.Component#Component(String)
+	 */
+	public FormComponent(final String id)
+	{
+		super(id);
+		// the form decides whether form components are versioned or not
+		// see Form.setVersioned
+		setVersioned(false);
+	}
+
+	/**
+	 * @see org.apache.wicket.Component#Component(String, IModel)
+	 */
+	public FormComponent(final String id, IModel model)
+	{
 		super(id, model);
 		// the form decides whether form components are versioned or not
 		// see Form.setVersioned
@@ -312,15 +556,6 @@
 	}
 
 	/**
-	 * @see org.apache.wicket.Component#getBehaviors(java.lang.Class)
-	 */
-	protected List getBehaviors(Class type)
-	{
-		// List
-		return super.getBehaviors(type);
-	}
-
-	/**
 	 * @return The parent form for this form component
 	 */
 	public Form getForm()
@@ -410,6 +645,7 @@
 		return inputName.toString();
 	}
 
+
 	/**
 	 * The value will be made available to the validator property by means of
 	 * ${label}. It does not have any specific meaning to FormComponent itself.
@@ -441,7 +677,6 @@
 		return type;
 	}
 
-
 	/**
 	 * @see Form#getValidatorKeyPrefix()
 	 * @return prefix used when constructing validator key messages
@@ -586,6 +821,7 @@
 		return getFlag(FLAG_REQUIRED);
 	}
 
+
 	/**
 	 * Gets whether this component is 'valid'. Valid in this context means that
 	 * no validation errors were reported the last time the form component was
@@ -616,6 +852,14 @@
 	}
 
 	/**
+	 * @see org.apache.wicket.markup.html.form.IFormVisitorParticipant#processChildren(boolean)
+	 */
+	public boolean processChildren()
+	{
+		return true;
+	}
+
+	/**
 	 * This method will retrieve the request parameter, validate it, and if
 	 * valid update the model. These are the same steps as would be performed by
 	 * the form.
@@ -655,7 +899,6 @@
 		return this;
 	}
 
-
 	/**
 	 * Sets the value for a form component this value will be split the string
 	 * with {@link FormComponent#VALUE_SEPARATOR} and calls
@@ -757,6 +1000,7 @@
 		setModelObject(getConvertedInput());
 	}
 
+
 	/**
 	 * Called to indicate that the user input is valid.
 	 */
@@ -787,6 +1031,77 @@
 	}
 
 	/**
+	 * @param validator
+	 *            The validator to add to the validators Object (which may be an
+	 *            array of IValidators or a single instance, for efficiency)
+	 */
+	private void validators_add(final IValidator validator)
+	{
+		if (this.validators == null)
+		{
+			this.validators = validator;
+		}
+		else
+		{
+			// Get current list size
+			final int size = validators_size();
+
+			// Create array that holds size + 1 elements
+			final IValidator[] validators = new IValidator[size + 1];
+
+			// Loop through existing validators copying them
+			for (int i = 0; i < size; i++)
+			{
+				validators[i] = validators_get(i);
+			}
+
+			// Add new validator to the end
+			validators[size] = validator;
+
+			// Save new validator list
+			this.validators = validators;
+		}
+	}
+
+	/**
+	 * Gets validator from validators Object (which may be an array of
+	 * IValidators or a single instance, for efficiency) at the given index
+	 * 
+	 * @param index
+	 *            The index of the validator to get
+	 * @return The validator
+	 */
+	private IValidator validators_get(int index)
+	{
+		if (this.validators == null)
+		{
+			throw new IndexOutOfBoundsException();
+		}
+		if (this.validators instanceof IValidator[])
+		{
+			return ((IValidator[])validators)[index];
+		}
+		return (IValidator)validators;
+	}
+
+	/**
+	 * @return The number of validators in the validators Object (which may be
+	 *         an array of IValidators or a single instance, for efficiency)
+	 */
+	private int validators_size()
+	{
+		if (this.validators == null)
+		{
+			return 0;
+		}
+		if (this.validators instanceof IValidator[])
+		{
+			return ((IValidator[])validators).length;
+		}
+		return 1;
+	}
+
+	/**
 	 * Converts and validates the conversion of the raw input string into the
 	 * object specified by {@link FormComponent#getType()} and records any
 	 * errors. Converted value is available through
@@ -883,6 +1198,14 @@
 		return value != null && value.length > 0 && value[0] != null ? value[0].trim() : null;
 	}
 
+	/**
+	 * @see org.apache.wicket.Component#getBehaviors(java.lang.Class)
+	 */
+	protected List getBehaviors(Class type)
+	{
+		// List
+		return super.getBehaviors(type);
+	}
 
 	/**
 	 * @return Value to return when model value is needed
@@ -990,6 +1313,13 @@
 		super.onComponentTag(tag);
 	}
 
+	protected void onDetach()
+	{
+		super.onDetach();
+		convertedInput = null;
+	}
+
+
 	/**
 	 * Called by {@link #onComponentTag(ComponentTag)} when the component is
 	 * disabled. By default, this method will add a disabled="disabled"
@@ -1004,12 +1334,6 @@
 		tag.put("disabled", "disabled");
 	}
 
-	protected void onDetach()
-	{
-		super.onDetach();
-		convertedInput = null;
-	}
-
 	/**
 	 * Handle invalidation
 	 */
@@ -1072,330 +1396,6 @@
 			throw new WicketRuntimeException("Exception '" + e + "' occurred during validation "
 					+ validator.getClass().getName() + " on component " + this.getPath(), e);
 		}
-	}
-
-	/**
-	 * @param validator
-	 *            The validator to add to the validators Object (which may be an
-	 *            array of IValidators or a single instance, for efficiency)
-	 */
-	private void validators_add(final IValidator validator)
-	{
-		if (this.validators == null)
-		{
-			this.validators = validator;
-		}
-		else
-		{
-			// Get current list size
-			final int size = validators_size();
-
-			// Create array that holds size + 1 elements
-			final IValidator[] validators = new IValidator[size + 1];
-
-			// Loop through existing validators copying them
-			for (int i = 0; i < size; i++)
-			{
-				validators[i] = validators_get(i);
-			}
-
-			// Add new validator to the end
-			validators[size] = validator;
-
-			// Save new validator list
-			this.validators = validators;
-		}
-	}
-
-	/**
-	 * Gets validator from validators Object (which may be an array of
-	 * IValidators or a single instance, for efficiency) at the given index
-	 * 
-	 * @param index
-	 *            The index of the validator to get
-	 * @return The validator
-	 */
-	private IValidator validators_get(int index)
-	{
-		if (this.validators == null)
-		{
-			throw new IndexOutOfBoundsException();
-		}
-		if (this.validators instanceof IValidator[])
-		{
-			return ((IValidator[])validators)[index];
-		}
-		return (IValidator)validators;
-	}
-
-
-	/**
-	 * @return The number of validators in the validators Object (which may be
-	 *         an array of IValidators or a single instance, for efficiency)
-	 */
-	private int validators_size()
-	{
-		if (this.validators == null)
-		{
-			return 0;
-		}
-		if (this.validators instanceof IValidator[])
-		{
-			return ((IValidator[])validators).length;
-		}
-		return 1;
-	}
-
-	/**
-	 * Adapter that makes this component appear as {@link IValidatable}
-	 * 
-	 * @author ivaynberg
-	 */
-	private class ValidatableAdapter implements IValidatable
-	{
-
-		/**
-		 * @see org.apache.wicket.validation.IValidatable#error(org.apache.wicket.validation.IValidationError)
-		 */
-		public void error(IValidationError error)
-		{
-			FormComponent.this.error(error);
-		}
-
-		/**
-		 * @see org.apache.wicket.validation.IValidatable#getValue()
-		 */
-		public Object getValue()
-		{
-			return FormComponent.this.getConvertedInput();
-		}
-
-		public boolean isValid()
-		{
-			return FormComponent.this.isValid();
-		}
-
-	}
-
-	/**
-	 * {@link IErrorMessageSource} used for error messags against this form
-	 * components.
-	 * 
-	 * @author ivaynberg
-	 */
-	private class MessageSource implements IErrorMessageSource
-	{
-
-		/**
-		 * @see org.apache.wicket.validation.IErrorMessageSource#getMessage(java.lang.String)
-		 */
-		public String getMessage(String key)
-		{
-			final FormComponent formComponent = FormComponent.this;
-
-			// retrieve prefix that will be used to construct message keys
-			String prefix = formComponent.getValidatorKeyPrefix();
-			if (Strings.isEmpty(prefix))
-			{
-				prefix = "";
-			}
-
-			final Localizer localizer = formComponent.getLocalizer();
-
-			String resource = prefix + getId() + "." + key;
-
-			// First use the parent for resolving so that
-			// form1.textfield1.Required can be used.
-
-			// Note: It is important that the default value of "" is provided
-			// to getString() not to throw a MissingResourceException or to
-			// return a default string like "[Warning: String ..."
-			String message = localizer.getString(resource, formComponent.getParent(), "");
-
-			// If not found, than ...
-			if (Strings.isEmpty(message))
-			{
-				// Try a variation of the resource key
-
-				resource = prefix + key;
-
-				message = localizer.getString(resource, formComponent.getParent(), "");
-			}
-
-			if (Strings.isEmpty(message))
-			{
-				// If still empty then use default
-
-				resource = prefix + getId() + "." + key;
-
-				// Note: It is important that the default value of "" is
-				// provided
-				// to getString() not to throw a MissingResourceException or to
-				// return a default string like "[Warning: String ..."
-				message = localizer.getString(resource, formComponent, "");
-
-				// If not found, than ...
-				if (Strings.isEmpty(message))
-				{
-					// Try a variation of the resource key
-
-					resource = prefix + key;
-
-					message = localizer.getString(resource, formComponent, "");
-				}
-			}
-
-			// convert empty string to null in case our default value of "" was
-			// returned from localizer
-			if (Strings.isEmpty(message))
-			{
-				message = null;
-			}
-			return message;
-		}
-
-		/**
-		 * Creates a new params map that additionaly contains the default input,
-		 * name, label parameters
-		 * 
-		 * @param params
-		 *            original params map
-		 * @return new params map
-		 */
-		private Map addDefaultVars(Map params)
-		{
-			// create and fill the new params map
-			final HashMap fullParams;
-			if (params == null)
-			{
-				fullParams = new HashMap(6);
-			}
-			else
-			{
-				fullParams = new HashMap(params.size() + 6);
-				fullParams.putAll(params);
-			}
-
-			// add the input param if not already present
-			if (!fullParams.containsKey("input"))
-			{
-				fullParams.put("input", FormComponent.this.getInput());
-			}
-
-			// add the name param if not already present
-			if (!fullParams.containsKey("name"))
-			{
-				fullParams.put("name", FormComponent.this.getId());
-			}
-
-			// add the label param if not already present
-			if (!fullParams.containsKey("label"))
-			{
-				fullParams.put("label", getLabel());
-			}
-			return fullParams;
-		}
-
-		/**
-		 * @return value of label param for this form component
-		 */
-		private Object getLabel()
-		{
-			final FormComponent fc = FormComponent.this;
-			Object label = null;
-
-			// first try the label model ...
-			if (fc.getLabel() != null)
-			{
-				label = fc.getLabel().getObject();
-			}
-			// ... then try a resource of format [form-component-id] with
-			// default of '[form-component-id]'
-			if (label == null)
-			{
-
-				label = fc.getLocalizer().getString(fc.getId(), fc.getParent(), fc.getId());
-			}
-			return label;
-		}
-
-
-		/**
-		 * @see org.apache.wicket.validation.IErrorMessageSource#substitute(java.lang.String,
-		 *      java.util.Map)
-		 */
-		public String substitute(String string, Map vars) throws IllegalStateException
-		{
-			return new MapVariableInterpolator(string, addDefaultVars(vars), true).toString();
-		}
-	}
-
-	/**
-	 * @see org.apache.wicket.markup.html.form.IFormVisitorParticipant#processChildren(boolean)
-	 */
-	public boolean processChildren()
-	{
-		return true;
-	}
-
-	/**
-	 * Visits any form components inside component if it is a container, or
-	 * component itself if it is itself a form component
-	 * 
-	 * @param component
-	 *            starting point of the traversal
-	 * 
-	 * @param visitor
-	 *            The visitor to call
-	 */
-	public static final void visitFormComponentsPostOrder(Component component,
-			final FormComponent.IVisitor visitor)
-	{
-		if (visitor == null)
-		{
-			throw new IllegalArgumentException("Argument `visitor` cannot be null");
-		}
-
-
-		visitFormComponentsPostOrderHelper(component, visitor);
-	}
-
-	private static final Object visitFormComponentsPostOrderHelper(Component component,
-			final FormComponent.IVisitor visitor)
-	{
-		if (component instanceof MarkupContainer)
-		{
-			final MarkupContainer container = (MarkupContainer)component;
-			if (container.size() > 0)
-			{
-				boolean visitChildren = true;
-				if (container instanceof IFormVisitorParticipant)
-				{
-					visitChildren = ((IFormVisitorParticipant)container).processChildren();
-				}
-				if (visitChildren)
-				{
-					final Iterator children = container.iterator();
-					while (children.hasNext())
-					{
-						final Component child = (Component)children.next();
-						Object value = visitFormComponentsPostOrderHelper(child, visitor);
-						if (value == Component.IVisitor.STOP_TRAVERSAL)
-						{
-							return value;
-						}
-					}
-				}
-			}
-		}
-
-		if (component instanceof FormComponent)
-		{
-			final FormComponent fc = (FormComponent)component;
-			return visitor.formComponent(fc);
-		}
-
-		return null;
 	}
 
 }