Validador de Número de Identificação Social (NIS)

Boa tarde, tudo certo?? Bem, na minha aplicação estou fazendo um validador de NIS, porém, não estou obtendo muito sucesso. Tem várias maneiras de fazê-lo e estou vendo no momento qual a melhor. De início estou fazendo o seguinte: criei duas classes Nis.validator e Nis.converter e nelas estou fazendo as validações necessárias. Porém, não estou conseguindo fazer com que retorne a validação correta mesmo. O meu método validaNIS está em loop, e não estou conseguindo arrumar. Abaixo as classes:
Nis.validator:



import java.util.ResourceBundle;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.FacesValidator;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;


@FacesValidator(value = "validator.NisValidator")
public class NisValidator implements Validator {

    @Override
    public void validate(FacesContext arg0, UIComponent arg1, Object valorTela) throws ValidatorException {
        if (!validaNIS(String.valueOf(valorTela)) && !valorTela.equals("")) { // && !valorTela.equals("") passa a ser não obrigatório 
            FacesMessage message = new FacesMessage();
            message.setSeverity(FacesMessage.SEVERITY_ERROR);
            message.setSummary(ResourceBundle.getBundle(FacesContext.getCurrentInstance().getApplication().getMessageBundle()).getString("erro.validacao.nis"));
            throw new ValidatorException(message);
        }
    }

 
    private static boolean validaNIS(String nis) {
        if (nis == null || nis.length() != 11 || isNISPadrao(nis)) {
            return false;
        }

        try {
            Long.parseLong(nis);
        } catch (NumberFormatException e) { 
            return false;
        }

        return true; 
    }

    /**
     *
     * @param nis String valor a ser testado
     * @return boolean indicando se o usuário entrou com um NIS padrão
     */
    private static boolean isNISPadrao(String nis) {
        if (nis.equals("11111111111") || nis.equals("22222222222")
                || nis.equals("33333333333")
                || nis.equals("44444444444")
                || nis.equals("55555555555")
                || nis.equals("66666666666")
                || nis.equals("77777777777")
                || nis.equals("88888888888")
                || nis.equals("99999999999")) {
            return true;
        }
        return false;
    }

    private boolean validaPIS(String strPIS) {
        char i, j, somatorio = 0;
        char chDigitoVerificador;
        char chPISAux;

        try {
            for (i = 0, j = 4; j >= 2; i++, j--) {
                somatorio += ((strPIS.charAt(i) - 0x30) * j);
            }
            for (j = 9; j >= 2; i++, j--) {
                somatorio += ((strPIS.charAt(i) - 0x30) * j);
            }
            if ((somatorio % 11) < 2) {
                chDigitoVerificador = 0;
            } else {
                chDigitoVerificador = (char) (11 - (somatorio % 11));
            }
            chPISAux = (char) (chDigitoVerificador + '0');
            if (strPIS.charAt(11) == chPISAux) {
                return true;
            } else {
                return false;
            }
        } catch (Exception e) {
            return false;
        }
    }
        
}

Nis.converter:


import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.faces.convert.FacesConverter;

/**
 *
 * @author prog8
 */
@FacesConverter(value = "converter.NisConverter")
public class NisConverter implements Converter {

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) throws ConverterException {
   
        String nis = value;
        if (value != null && !value.equals("")) {
            nis = value.replaceAll("\\.", "").replaceAll("\\-", "");
        }

        return nis;
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) throws ConverterException {
       
        String nis = (String) value;
        if (nis != null && nis.length() == 11) {
            nis = nis.substring(0, 3) + "." + nis.substring(3, 8) + "." + nis.substring(8, 10) + "." + nis.substring(10, 11);
        }
        return nis;
    }
}

E no meu xhtml:

<p:outputLabel value="Identificação social (NIS):" for="identificacaoSocial"/>
                                    <p:inputMask  mask="999.99999.99.9" id="identificacaoSocial" required="true"  value="#{alunoJsfBean.crudObj.numeroIdentificacaoSocial}" maxlength="14">
                                        <f:converter converterId="converter.NisConverter"/>
                                        <f:validator validatorId="validator.NisValidator"/>
                                    </p:inputMask>  

Se aluguém puder ajudar, agradeço mto…Vlw

Bom dia, alguém poderia dar uma ajuda aí?? Se alguém puder, agradeço mto…Vlw;;