Ao tentar carregar o objeto ICPBrasilCertificate de um certificado de equipamento que não possui dados no campo BIRTH_DATE ocorre o erro abaixo:
br.gov.serpro.denatran.utils.exceptions.ParametroInvalidoException: CERTIFICADO_ERRO_EXTRAIR
at br.gov.serpro.portalservicos.acesso.util.CertificadoUtils.getCertificado(CertificadoUtils.java:62)
at br.gov.serpro.portalservicos.acesso.service.LoginService.autorizarCertificadoPJ(LoginService.java:249)
at br.gov.serpro.portalservicos.acesso.controller.LoginCertificadoController.loginCertificadoPJ(LoginCertificadoController.java:43)
at ...
Caused by: org.demoiselle.signer.core.exception.CertificateCoreException: Ocorreu um erro ao recuperar o valor do campo: dataNascimento
at org.demoiselle.signer.core.extension.ICPBrasilExtensionLoader.load(ICPBrasilExtensionLoader.java:292)
at org.demoiselle.signer.core.CertificateManager.load(CertificateManager.java:180)
at org.demoiselle.signer.core.CertificateManager.load(CertificateManager.java:202)
at br.gov.serpro.portalservicos.acesso.util.CertificadoUtils.getCertificado(CertificadoUtils.java:60)
... 107 more
Caused by: java.lang.NullPointerException: Cannot invoke "java.util.Date.toString()" because the return value of "org.demoiselle.signer.core.extension.ICPBRCertificateEquipment.getBirthDate()" is null
at org.demoiselle.signer.core.extension.ICPBrasilExtensionLoader.load(ICPBrasilExtensionLoader.java:167)
... 110 more
Na classe ICPBrasilExtensionLoader, método load é feito um toString() no campo BIRTH_DATE quando é certificado de equipamento, conforme o trecho abaixo:
case BIRTH_DATE:
if (cert.hasCertificatePF()) {
keyValue = cert.getICPBRCertificatePF().getBirthDate();
} else {
if (cert.hasCertificatePJ()) {
keyValue = cert.getICPBRCertificatePJ().getBirthDate();
} else {
if (cert.hasCertificateEquipment()) {
keyValue = cert.getICPBRCertificateEquipment().getBirthDate().toString();
} else {
keyValue = "";
}
}
}
break;
Acredito que seria necessário efetuar uma verificação se o campo BIRTH_DATE é diferente de nulo antes de tentar convertê-lo para String com o toString().
Ao tentar carregar o objeto ICPBrasilCertificate de um certificado de equipamento que não possui dados no campo BIRTH_DATE ocorre o erro abaixo:
br.gov.serpro.denatran.utils.exceptions.ParametroInvalidoException: CERTIFICADO_ERRO_EXTRAIR at br.gov.serpro.portalservicos.acesso.util.CertificadoUtils.getCertificado(CertificadoUtils.java:62) at br.gov.serpro.portalservicos.acesso.service.LoginService.autorizarCertificadoPJ(LoginService.java:249) at br.gov.serpro.portalservicos.acesso.controller.LoginCertificadoController.loginCertificadoPJ(LoginCertificadoController.java:43) at ... Caused by: org.demoiselle.signer.core.exception.CertificateCoreException: Ocorreu um erro ao recuperar o valor do campo: dataNascimento at org.demoiselle.signer.core.extension.ICPBrasilExtensionLoader.load(ICPBrasilExtensionLoader.java:292) at org.demoiselle.signer.core.CertificateManager.load(CertificateManager.java:180) at org.demoiselle.signer.core.CertificateManager.load(CertificateManager.java:202) at br.gov.serpro.portalservicos.acesso.util.CertificadoUtils.getCertificado(CertificadoUtils.java:60) ... 107 more Caused by: java.lang.NullPointerException: Cannot invoke "java.util.Date.toString()" because the return value of "org.demoiselle.signer.core.extension.ICPBRCertificateEquipment.getBirthDate()" is null at org.demoiselle.signer.core.extension.ICPBrasilExtensionLoader.load(ICPBrasilExtensionLoader.java:167) ... 110 more
Na classe ICPBrasilExtensionLoader, método load é feito um toString() no campo BIRTH_DATE quando é certificado de equipamento, conforme o trecho abaixo:
case BIRTH_DATE: if (cert.hasCertificatePF()) { keyValue = cert.getICPBRCertificatePF().getBirthDate(); } else { if (cert.hasCertificatePJ()) { keyValue = cert.getICPBRCertificatePJ().getBirthDate(); } else { if (cert.hasCertificateEquipment()) {
keyValue = cert.getICPBRCertificateEquipment().getBirthDate().toString();
} else { keyValue = ""; } } } break;Acredito que seria necessário efetuar uma verificação se o campo BIRTH_DATE é diferente de nulo antes de tentar convertê-lo para String com o toString().