/*******************************************************************************
 * Copyright (c) 2008, 2010 VMware Inc.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *   VMware Inc. - initial contribution
 *******************************************************************************/

package org.springframework.showcase.formtags.validation;



import org.springframework.showcase.formtags.domain.User;

import org.springframework.validation.Errors;

import org.springframework.validation.ValidationUtils;

import org.springframework.validation.Validator;



/**

 * Simple {@link Validator} implementation for {@link User} instances.

 *


 */

public class UserValidator implements Validator {



    public boolean supports(Class candidate) {

        return User.class.isAssignableFrom(candidate);

    }



    public void validate(Object obj, Errors errors) {

        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "firstName", "required", "Field is required.");

        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "lastName", "required", "Field is required.");

    }



}

