Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Fiz a declaração do clientHttpConfiguration diferente há problema?

public class AbrigoService {
    public ClientHttpConfiguration clientHttpConfiguration = new ClientHttpConfiguration();
    
    public void listarAbrigo() throws IOException, InterruptedException {
        String uri = "http://localhost:8080/abrigos";
        HttpResponse<String> response = clientHttpConfiguration.dispararRequisicaoGet(uri);
        String responseBody = response.body();
        JsonArray jsonArray = JsonParser.parseString(responseBody).getAsJsonArray();
        System.out.println("Abrigos cadastrados:");
        for (JsonElement element : jsonArray) {
            JsonObject jsonObject = element.getAsJsonObject();
            long id = jsonObject.get("id").getAsLong();
            String nome = jsonObject.get("nome").getAsString();
            System.out.println(id +" - " +nome);
        }
    }
}

Fiz dessa forma, diferente do modo que o professor fez, pode ser considerado correto e um bom padrão ?

2 respostas
solução!

A declaração funciona, mas instanciar diretamente a classe ClientHttpConfiguration dentro da classe AbrigoService fere o princípio da Inversão de Dependência (parte do SOLID). Uma forma mais adequada seria usar injeção de dependência, recebendo essa configuração por parâmetro no construtor.

public class AbrigoService {

    private final ClientHttpConfiguration clientHttpConfiguration;

    public AbrigoService(ClientHttpConfiguration clientHttpConfiguration) {
        this.clientHttpConfiguration = clientHttpConfiguration;
    }

    // Método listarAbrigo permanece o mesmo
}

Desse jeito, você ganha flexibilidade para testes e evita acoplamento excessivo.

Obrigado pelo seu esclarecimento!