Quando usar Long vs long em java?

Abaixo está minha interface -

public interface IDBClient {
    public String read(ClientInput input);
}

Esta é a minha implementação da interface -

public class DatabaseClient implements IDBClient {

    @Override
    public String read(ClientInput input) {

    }
}

Agora eu tenho uma fábrica que recebe a instância deDatabaseClient como isso -

IDBClient client = DatabaseClientFactory.getInstance();
....

Agora preciso fazer uma ligação pararead método do meuDatabaseClient que aceita oClientInput parâmetro e abaixo é a classe para o mesmo. Esta aula não foi escrita por mim, por isso, estou fazendo uma pergunta sobre isso e tenho quase certeza de que essa é a maneira errada de fazê-lo.

public final class ClientInput {

    private Long userid;
    private Long clientid;
    private Long timeout_ms = 20L;
    private boolean debug;
    private Map<String, String> parameterMap;

    public ClientInput(Long userid, Long clientid, Map<String, String> parameterMap, Long timeout_ms, boolean debug) {
        this.userid = userid;
        this.clientid = clientid;
        this.parameterMap = parameterMap;
        this.timeout_ms = timeout_ms;
        this.debug = debug;
    }
}    

Então, quando o cliente faz uma chamada pararead método deDatabaseClient, eles criarão oClientInput parâmetro como este e, em seguida, use a fábrica para obter a Instância deDatabaseClient e chame o método de leitura de acordo.

Map<String, String> paramMap = new HashMap<String, String>();
paramMap.put("attribute", "segmentation");

ClientInput input = new ClientInput(109739281L, 20L, paramMap, 1000L, true);

IDBClient client = DatabaseClientFactory.getInstance();
client.read(input);

Declaração do problema: -

Então, minha primeira pergunta é:userid, clientid, timeout_ms deveria estarLong objeto ou simplesmentelong noClientInput classe?A segunda pergunta que tenho é: pode ser possível que o cliente possa passar informações erradas, comonegative user ids, negative client id, negative timeout valor etc etc .. Então, onde devo fazer essa validação? Devo fazer essa verificação de validação no construtor deClientInput aula ou em algum outro lugar? Qual é a melhor maneira de fazer isso e como devo fazer a validação?

questionAnswers(7)

yourAnswerToTheQuestion