A biblioteca java atualizada para 1.19.0 e os tipos de retorno do modelo de usuário são todos diferentes

StackOverflow https://stackoverflow.com//questions/25068485

  •  26-12-2019
  •  | 
  •  

Pergunta

Estou usando a biblioteca cliente Java para a API do Directory aqui:https://developers.google.com/api-client-library/java/apis/admin/directory_v1

O modelo com.google.api.services.admin.directory.model.User mudou de 1.16 para 1.19.

Na versão antiga eu costumava fazer isso:

List<UserAddress> userAddressList = user.getAddresses();
for(UserAddress userAddress : userAddressList) {
    ///
}

Mas agora user.getAddresses está retornando um objeto.O mesmo negócio para getOrganizations, telefones, etc.Todos eles retornam um Object que, após uma inspeção mais aprofundada, se parece com:

List<ArrayMap<String, String>>

ArrayMap estende GenericJson.

O que preciso fazer para chegar ao UserAddress, além de voltar para a versão anterior?

Foi útil?

Solução

É um bug (do meu ponto de vista) nas versões mais recentes.Use um mais antigo como 1.16, 1.17 ou o primeiro 1.18 (o último 1.18 também tem o bug).

Outras dicas

A mesma coisa aconteceu no cliente C# e em maio de 2015, um desenvolvedor do Google chamado Eric Koleda respondeu:

Uma alteração no back-end teve a consequência não intencional de alterar o documento de descoberta do serviço, fazendo com que o campo de endereços (e outros) fosse marcado como type=any.Isso causa problemas para linguagens de tipos fortes como .NET, como você descobriu.A equipe está ciente do problema, mas não está claro quando uma correção estará disponível.

No entanto, o cliente C# ainda tem esse problema, então presumo que o cliente Java também tenha.

Aqui estão alguns problemas que encontrei no rastreador de problemas do Google especificamente para esse problema no cliente Java, mas nenhum deles viu nenhum progresso ainda:

  • Edição 3645:Gerador de código quebrado para Directory API no cliente Java:Classe de usuário sem tipos explícitos
  • Edição 3730:A versão mais recente do cliente Directory API retorna Object em vez da classe correta
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top