package org.jboss.seam.ui.renderkit;
import java.io.IOException;
import java.util.List;
import javax.faces.component.EditableValueHolder;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import org.jboss.seam.ui.component.UIValidateAll;
import org.jboss.seam.ui.util.cdk.RendererBase;
import org.jboss.seam.ui.validator.ModelValidator;
public class ValidateAllRendererBase extends RendererBase
{
@Override
protected Class getComponentClass()
{
return UIValidateAll.class;
}
@Override
protected void doEncodeChildren(ResponseWriter writer, FacesContext context, UIComponent component) throws IOException
{
renderChildren(context, component);
UIValidateAll validateAll = (UIValidateAll) component;
if (!validateAll.isValidatorsAdded())
{
addValidators(validateAll.getChildren());
validateAll.setValidatorsAdded(true);
}
}
private void addValidators(List children)
{
for (Object child: children)
{
if (child instanceof EditableValueHolder)
{
EditableValueHolder evh = (EditableValueHolder) child;
if ( evh.getValidators().length==0 )
{
evh.addValidator( new ModelValidator() );
}
}
addValidators( ( (UIComponent) child ).getChildren() );
}
}
@Override
public boolean getRendersChildren()
{
return true;
}
}