Atualmente, o método assinarXml() aceita uma String para o parâmetro algoritmoCanonicalizacao. Embora funcional, essa abordagem carece de segurança de tipo e pode levar a erros em tempo de execução se uma URI inválida for fornecida.
Melhoria Proposta
Para aumentar a robustez e a clareza da API, propõe-se a seguinte refatoração:
1. Criar um Enum AlgoritmoCanonicalizacao:
Este enum irá encapsular os algoritmos suportados, como EXCLUSIVE e INCLUSIVE, e seus respectivos URIs.
public enum AlgoritmoCanonicalizacao {
EXCLUSIVE("http://www.w3.org/2001/10/xml-exc-c14n#"),
INCLUSIVE("http://www.w3.org/TR/2001/REC-xml-c14n-20010315");
private final String uri;
// ... construtor e getter
}
2. Atualizar a Assinatura do Método:
Modificar o método assinarXml para aceitar o novo enum em vez de uma String.
Remover:
public String assinarXml(..., String algoritmoCanonicalizacao)
Adicionar novo código:
public String assinarXml(..., AlgoritmoCanonicalizacao algoritmo)
3. Ajustar a Lógica Interna:
A chamada para newCanonicalizationMethod usará a URI obtida do enum.
// ...
fac.newCanonicalizationMethod(algoritmo.getUri(), ...);
// ...
4. Atualizar os Testes:
Ajustar a classe AssinadorXmlTeste para usar o enum nas chamadas de teste.
Benefícios
- Segurança de Tipo (Type Safety): Impede que valores inválidos sejam passados, movendo a verificação do erro de tempo de execução para tempo de compilação.
- API Auto-documentada: A assinatura do método deixa claro quais são as opções válidas.
- Manutenibilidade: Facilita a adição de novos algoritmos no futuro em um único local (o enum).
Atualmente, o método assinarXml() aceita uma String para o parâmetro algoritmoCanonicalizacao. Embora funcional, essa abordagem carece de segurança de tipo e pode levar a erros em tempo de execução se uma URI inválida for fornecida.
Melhoria Proposta
Para aumentar a robustez e a clareza da API, propõe-se a seguinte refatoração:
1. Criar um Enum AlgoritmoCanonicalizacao:
Este enum irá encapsular os algoritmos suportados, como EXCLUSIVE e INCLUSIVE, e seus respectivos URIs.
2. Atualizar a Assinatura do Método:
Modificar o método assinarXml para aceitar o novo enum em vez de uma String.
3. Ajustar a Lógica Interna:
A chamada para newCanonicalizationMethod usará a URI obtida do enum.
4. Atualizar os Testes:
Ajustar a classe AssinadorXmlTeste para usar o enum nas chamadas de teste.
Benefícios