Gostaria de divulgar uma API desenvolvida durante a conclusão de um curso de pós-graduação em Java e desta forma agradecer as demais contribuições do GUJ que ajudaram no desenvolvimento do trabalho.
A API facilita a leitura e persistência de arquivos de configuração nos formatos XML e Properties utilizando criptografia para proteger dados sensíveis, também utiliza anotações e possui uma interface para criptografar e descriptografar atributos facilitando assim a vida do programador.
O projeto tem grande utilidade visto que praticamente todos os projetos utilizam arquivos de configuração com intuito de armazenar informações de pendências com outros serviços, como por exemplo, IP, usuário e senha de banco de dados, usuário e senha Ldap e etc.
Exemplo de uso Properties
Arquivo de propriedades: teste.properties
nome=Ricardo Vasselai
detalhe=Ko4IrG7xMWk=
quantidade=5
Entidade anotada: Classe Tipo
@PropertiesEntity(file="teste.properties",cryptoKey="xyz")
public class Tipo {
private String nome;
@Encrypted
private String detalhe;
private int quantidade;
//Construtor padrão, gets e sets...
Código para carregar e persistir:
ConfigManager cm = new ConfigManager("c:/tmp"); //diretório onde se encontra o arquivo
Tipo tipo = cm.load(Tipo.class); //Carregando
cm.persist(tipo); //Persistindo
Exemplo de uso XML
Arquivo XML: teste.xml
<tipo>
<detalhe>Ko4IrG7xMWk=</detalhe>
<nome>Ricardo</nome>
<quantidade>5</quantidade>
</tipo>
Entidade Anotada: Classe Tipo
@XmlEntity(file="teste.xml",cryptoKey="xyz")
@XmlRootElement
public class Tipo {
private String nome;
@Encrypted
private String detalhe;
private int quantidade; //Construtor padrão, gets e sets...
Código para ler e gravar:
ConfigManager cm= new ConfigManager(Util.getPathInPackge("br.test.cfg")); //Pacote onde está o arquivo
Tipo tipo = cm.load(Tipo.class); //Carregando
cm.persist(tipo); //Persistindo
Interface para criptografar, descriptografar atributos e gerar chaves aleatórias:
A API se encontra no SourceForge no endereço: http://sourceforge.net/projects/configapi/
Neste endereço também se encontram detalhes da implementação com PDFs sobre o assunto.
O projeto tem algumas pendências:
- gnu-crypto: já se encontra no projeto enviado para o SourceForge e pode ser encontrado em http://www.gnu.org/software/gnu-crypto/
- JAXB-API: somente para quem está abaixo JDK 6 update 5 que também está no projeto enviado para o SourceForge