O objeto que está retornando para mim vem da seguinte linha:
String token = headers.getRequestHeader("token").get(0);
Ele vem como um biginteger, mas não consigo converte-lo:
Se ele já vem como eu poderia forçar uma conversão?

O objeto que está retornando para mim vem da seguinte linha:
String token = headers.getRequestHeader("token").get(0);
Ele vem como um biginteger, mas não consigo converte-lo:
Se ele já vem como eu poderia forçar uma conversão?

como você tentou fazer?
Na verdade o token já está vindo como String. Quem o gerou fez como BigInteger[] mas chamou o toString em vez de fazer direitinho. Ferramentas como o GSon vai cuspir o json corretamente.
acho que sua implementacao de jax-rs ja deveria fazer isso. se nao eh padrao, deve ser facil criar um conversor, que gere uma String[] ou Collection do outro lado. Poste o codigo do metodo do servidor que devolve esse BigInteger[] e suas anotacoes.
Na verdade o token já está vindo como String. Quem o gerou fez como BigInteger[] mas chamou o toString em vez de fazer direitinho. Ferramentas como o GSon vai cuspir o json corretamente.acho que sua implementacao de jax-rs ja deveria fazer isso. se nao eh padrao, deve ser facil criar um conversor, que gere uma String[] ou Collection do outro lado. Poste o codigo do metodo do servidor que devolve esse BigInteger[] e suas anotacoes.
Na realidade eu retorno um usuário onde um dos atributos é um BigInteger[]. O problema é que ao resgatar esses valores ele mostra um BigInteger[] conforme a figura, mas eu não consigo efetuar a conversão.
Geração dos valores
public Usuario autenticar(String userId, String userPass) throws BusinessException{
UserLDAP userLdap = usuarioService.autenticar(userId, userPass);
System.out.println(userLdap.getNomeCompleto());
Usuario user = new Usuario();
user.setToken(userLdapToUsuario(userLdap));
return user;
}
private BigInteger[] userLdapToUsuario(UserLDAP userLdap){
Criptografia cripto = new Criptografia();
String campos = cripto.prepararCampos(userLdap.getUid());
BigInteger[] token = cripto.criptografar(campos);
return token;
}
Por fim o método que irá retornar o conteúdo:
@GET
@Produces("application/json")
public Usuario autenticar(@Context HttpHeaders headers) {
String userId = headers.getRequestHeader("userId").get(0);
String userPass = headers.getRequestHeader("userPass").get(0);
Usuario user = null;
try {
LoginBC login = new LoginBC();
user = login.autenticar(userId, userPass);
user.setCodErro(CodigoMensagensEnum.COD_OK.getCod());
} catch (BusinessException e) {
user = new Usuario();
user.setCodErro(CodigoMensagensEnum.COD_OBJ_NAO_ENCONTRADO.getCod());
user.setMensagem(MensagensEnum.MSG_ERRO_OBJ_NAO_ENCONTRADO.getMsg());
} catch (NamingException e) {
user = new Usuario();
user.setCodErro(CodigoMensagensEnum.COD_ERRO_CONTEXTO.getCod());
user.setMensagem(MensagensEnum.MSG_ERRO_CONTEXTO.getMsg());
}
return user;
}
Voce vai precisar implementar um MessageBodyWriter para o seu tipo Usuario (ou talvez para BigInteger[] e anotar o getter, nao sei se funciona).
Mais info:
http://cxf.apache.org/docs/jax-rs-data-bindings.html
Ah! E eu usaria excecoes simples para indicar problemas, em vez de setar no objeto Usuario