Skip to content

Refatoração: Usar Enum para o algoritmo de canonicalização #3

@heviane

Description

@heviane

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).

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions