«

»

Oct 24

Print this Post

Como carregar um arquivo de propriedades para o ColdFusion via Java

Problema:

Voce tem um ou mais arquivos de propriedades padrões que voce quer carregar para uma estrutura ColdFusion.

Solução:

Podemos nos aproveitar da biblioteca java.util.Properties  do Java para rapidamente carregar arquivos de propriedades.

ColdFusion certamente torna mais fácil para analisar através de um arquivo de propriedades “manualmente” com cffile e algumas simples funções de lista, no entanto, a classe Java java.util.Properties já faz o trabalho de carregar um arquivo de propriedades. Ela pode aceitar várias formas, conforme especificado na função load(Reader).

Explicação Detalhada:

No exemplo a seguir, digamos que voce tem um arquivo chamado properties.ini que contem o seguinte:


# App properties
prop1 = value1
prop2 = value2
prop3 = value 3

Aqui vai um simples exemplo para mostrar como podemos carregar essas propriedades em um objeto java.util.Properties e então obter uma propriedade:


file = expandPath( './properties.ini' );
properties = createObject( 'java', 'java.util.Properties' ).init();
fileStream = createObject( 'java', 'java.io.FileInputStream').init( file );
properties.load( fileStream );
writeOutput( 'property1 is ' & properties.getProperty( 'prop1') );

É então muito simples criar um componente ColdFusion que irá encapsular este pequeno código Java para voce, e tambem permitirá voce passar uma lista de arquivos de propriedades ao método init() (permitindo assim voce carregar múltiplos arquivos de propriedades em um único objeto com somente uma linha de código!)

Voce pode baixar aqui o arquivo zipado que contem o componente Properties.cfc, que permitirá voce carregar seus arquivos como se segue. O arquivo ZIP tambem contem um template example.cfm, com alguns códigos exemplos de uso, e três arquivos exemplos de propriedades.


files = 'sample1.properties,sample2.properties,sample3.properties';
properties = createObject( 'component', 'Properties' ).init( files);
writeOutput( 'key1 is ' & properties.getProperty( 'key1' ) );

Eu deveria tambem notar que a função interna getProfileString() do ColdFusion é relevante aqui, entretanto, eu não gosto de ter que passar um caminho absoluto para esta função toda vez que eu quiser recuperar o valor de uma singular propriedade. Tambem imaginaria que há uma pequena queda de performance se referenciarmos esta função frequentemente (creio que ela deve analisar todo o arquivo INI a cada vez, para achar a seção/propriedade requisitada).

by Jamie Krug
Adobe ColdFusion CookBook

Permanent link to this article: http://ensina.me/coldfusion/como-carregar-um-arquivo-de-propriedades-para-o-coldfusion-via-java/

Leave a Reply