Commit 79fdcb49ff8451ff2d70089c288310141aa7ead3
Exists in
master
Merge branch 'master' of git@github.com:demoiselle/framework.git
Showing
23 changed files
with
716 additions
and
95 deletions
Show diff stats
documentation/reference/pt-BR/bookinfo.xml
@@ -3,11 +3,11 @@ | @@ -3,11 +3,11 @@ | ||
3 | "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []> | 3 | "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []> |
4 | <bookinfo> | 4 | <bookinfo> |
5 | 5 | ||
6 | - <title>Framework Demoiselle &version;</title> | 6 | + <title>Framework Demoiselle 2.4.0-RC2</title> |
7 | <subtitle>Guia de Referência</subtitle> | 7 | <subtitle>Guia de Referência</subtitle> |
8 | 8 | ||
9 | - <abstract>Demoiselle &version;: Framework de Código Aberto para o Desenvolvimento de Aplicações Java EE 6</abstract> | ||
10 | - <titleabbrev>Demoiselle &version; - Guia de Referência</titleabbrev> | 9 | + <abstract>Demoiselle 2.4.0-RC2: Framework de Código Aberto para o Desenvolvimento de Aplicações Java EE 6</abstract> |
10 | + <titleabbrev>Demoiselle 2.4.0-RC2 - Guia de Referência</titleabbrev> | ||
11 | 11 | ||
12 | <xi:include href="authorgroup.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> | 12 | <xi:include href="authorgroup.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> |
13 | 13 |
documentation/reference/pt-BR/configuracao.xml
@@ -160,15 +160,15 @@ public class BookmarkConfig { | @@ -160,15 +160,15 @@ public class BookmarkConfig { | ||
160 | <section> | 160 | <section> |
161 | <title>Especificando os parâmetros</title> | 161 | <title>Especificando os parâmetros</title> |
162 | <para> | 162 | <para> |
163 | - Atualmente são suportados nativamente pelo <emphasis>Demoiselle Framework</emphasis> parâmetros de cinco tipos | ||
164 | - diferentes, são eles: <emphasis>primitivo</emphasis>, <emphasis>wrapped</emphasis>, <emphasis>String</emphasis>, | ||
165 | - <emphasis>class</emphasis>, <emphasis>map</emphasis> e <emphasis>array</emphasis>, sendo que os três últimos | ||
166 | - são suportados a partir da versão 2.4.0. A seguir vamos explicar e exemplificar como utilizar cada um desses | 163 | + Atualmente são suportados nativamente pelo <emphasis>Demoiselle Framework</emphasis> parâmetros de sete categorias |
164 | + diferentes. São eles: tipos primitivos (<emphasis>int, float, boolean, etc</emphasis>), classes <emphasis>wrapper</emphasis> (<emphasis>Integer, Float, Boolean, etc.</emphasis>) | ||
165 | + , <emphasis>String</emphasis>, <emphasis>Class</emphasis>, <emphasis>Map</emphasis>, <emphasis>Array</emphasis> e instâncias de <emphasis>Enum</emphasis>. | ||
166 | + A seguir vamos explicar e exemplificar como utilizar cada um desses | ||
167 | tipos, e alertar para as possíveis exceções que poderão ser lançadas para sua aplicação. | 167 | tipos, e alertar para as possíveis exceções que poderão ser lançadas para sua aplicação. |
168 | </para> | 168 | </para> |
169 | <caution> | 169 | <caution> |
170 | <para> | 170 | <para> |
171 | - A partir da versão 2.4.0 não são mais reconhecidas as convenções. Os parâmetros serão procurados exatamente | 171 | + A partir da versão 2.4.0 não são mais reconhecidas as convenções de substituição de nomes. Os parâmetros serão procurados exatamente |
172 | como foram definidos na classe de configuração. | 172 | como foram definidos na classe de configuração. |
173 | </para> | 173 | </para> |
174 | </caution> | 174 | </caution> |
@@ -332,58 +332,42 @@ untypedClass=package.MyOtherClass | @@ -332,58 +332,42 @@ untypedClass=package.MyOtherClass | ||
332 | <entry> | 332 | <entry> |
333 | <para> | 333 | <para> |
334 | Para utilizar parâmetros do tipo <emphasis>Map</emphasis>, o arquivo de configurações deve usar a seguinte | 334 | Para utilizar parâmetros do tipo <emphasis>Map</emphasis>, o arquivo de configurações deve usar a seguinte |
335 | - estrutura na formação da chave: <emphasis>prefixo+chavedomap+nomedoatributo</emphasis>. Vejamos um exemplo. | 335 | + estrutura na formação da chave: <emphasis>prefixo+nomedoatributo+chavedomap</emphasis>. Vejamos um exemplo. |
336 | Se temos em nossa aplicação uma classe de configuração como a mostrada abaixo: | 336 | Se temos em nossa aplicação uma classe de configuração como a mostrada abaixo: |
337 | </para> | 337 | </para> |
338 | <programlisting role="JAVA"><![CDATA[ | 338 | <programlisting role="JAVA"><![CDATA[ |
339 | @Configuration | 339 | @Configuration |
340 | public class BookmarkConfig { | 340 | public class BookmarkConfig { |
341 | 341 | ||
342 | - private Map<String, String> url; | 342 | + private Map<String, String> connectionConfiguration; |
343 | 343 | ||
344 | - private Map<String, String> driverClass; | ||
345 | - | ||
346 | - public Map<String, String> getUrl() { | ||
347 | - return url; | ||
348 | - } | ||
349 | - | ||
350 | - public Map<String, String> DriverClass() { | ||
351 | - return driverClass; | 344 | + public Map<String, String> getConnectionConfiguration() { |
345 | + return connectionConfiguration; | ||
352 | } | 346 | } |
353 | } | 347 | } |
354 | ]]></programlisting> | 348 | ]]></programlisting> |
355 | <para> | 349 | <para> |
356 | - O arquivo de configuração deverá ser preenchido no formato seguinte (se for do tipo <emphasis>properties</emphasis>): | 350 | + O arquivo de configuração deverá ser preenchido no seguinte formato (se for do tipo <emphasis>properties</emphasis>): |
357 | </para> | 351 | </para> |
358 | - <programlisting role="PROPERTIES"><![CDATA[ | ||
359 | -mapkey1.url=jdbc:postgresql://localhost:5432/app | ||
360 | -mapkey2.url=jdbc:mysql://localhost:3306/app | ||
361 | -mapkey1.driverClass=org.postgresql.Driver | ||
362 | -mapkey2.driverClass=com.mysql.Driver | ||
363 | - ]]></programlisting> | 352 | + <programlisting role="PROPERTIES"><![CDATA[connectionConfiguration.ip=192.168.0.120 |
353 | +connectionConfiguration.gateway=192.168.0.1 | ||
354 | +connectionConfiguration.dns1=200.10.128.99 | ||
355 | +connectionConfiguration.dns2=200.10.128.88]]></programlisting> | ||
364 | <para> | 356 | <para> |
365 | - Dessa forma, ao fazer a chamada <emphasis>url.get("mapkey2");</emphasis>por exemplo, o valor retornado será | ||
366 | - <emphasis>jdbc:mysql://localhost:3306/app</emphasis>. | 357 | + Dessa forma, ao fazer a chamada <emphasis>connectionConfiguration.get("gateway");</emphasis> por exemplo, o valor retornado será |
358 | + <emphasis>192.168.0.1</emphasis>. | ||
367 | </para> | 359 | </para> |
368 | - <note> | ||
369 | - <para> | ||
370 | - O ponto entre a chave do <emphasis>Map</emphasis> e o nome do parâmetro é adicionado automaticamente pelo | ||
371 | - framework. | ||
372 | - </para> | ||
373 | - </note> | 360 | + |
374 | <tip> | 361 | <tip> |
375 | <para> | 362 | <para> |
376 | Você pode utilizar a chave do Map com nome "default" para indicar que, no arquivo de configuração, a chave é formada | 363 | Você pode utilizar a chave do Map com nome "default" para indicar que, no arquivo de configuração, a chave é formada |
377 | - apenas pela junção do prefixo com o atributo, sem utilizar a própria chave do Map. Por exemplo, se na sua classe | ||
378 | - existir um comando como este: | ||
379 | - </para> | ||
380 | - <programlisting role="JAVA"><![CDATA[ | ||
381 | - myMap.get("default"); | ||
382 | - ]]></programlisting> | ||
383 | - <para>o framework irá procurar no arquivo de configuração uma linha como esta:</para> | ||
384 | - <programlisting role="JAVA"><![CDATA[ | ||
385 | - prefix.myMap=Default Value | ||
386 | - ]]></programlisting> | 364 | + apenas pela junção do prefixo com o atributo, sem utilizar a própria chave do Map. Por exemplo, se o seu arquivo de propriedades |
365 | + contiver uma chave: | ||
366 | + </para> | ||
367 | + <programlisting role="JAVA"><![CDATA[prefix.myMap=Default Value]]></programlisting> | ||
368 | + <para>então seu código poderá ter um comando:</para> | ||
369 | + <programlisting role="JAVA"><![CDATA[String value = myMap.get("default");]]></programlisting> | ||
370 | + <para>e o valor de <emphasis>value</emphasis> será <emphasis>"Default Value"</emphasis>.</para> | ||
387 | </tip> | 371 | </tip> |
388 | <para> | 372 | <para> |
389 | Caso a classe de configuração não esteja associada a um arquivo que contenha a chave de um de seus parâmetros | 373 | Caso a classe de configuração não esteja associada a um arquivo que contenha a chave de um de seus parâmetros |
@@ -427,7 +411,66 @@ integerArray=1 | @@ -427,7 +411,66 @@ integerArray=1 | ||
427 | </row> | 411 | </row> |
428 | </tbody> | 412 | </tbody> |
429 | </tgroup> | 413 | </tgroup> |
430 | - </informaltable> | 414 | + </informaltable> |
415 | + | ||
416 | + <informaltable> | ||
417 | + <tgroup cols="1"> | ||
418 | + <colspec colwidth="100*" /> | ||
419 | + <tbody> | ||
420 | + <row> | ||
421 | + <entry> | ||
422 | + <emphasis role="bold">Enum</emphasis> | ||
423 | + </entry> | ||
424 | + </row> | ||
425 | + <row> | ||
426 | + <entry> | ||
427 | + <para> | ||
428 | + É possível criar uma lista de constantes do tipo <emphasis>Enum</emphasis> e carregar um valor de constante | ||
429 | + através de um arquivo de configuração. Por exemplo, caso exista o seguinte <emphasis>Enum</emphasis> | ||
430 | + </para> | ||
431 | + | ||
432 | + <programlisting role="JAVA"><![CDATA[public enum ConfigurationType { | ||
433 | + | ||
434 | + PROPERTIES , XML , SYSTEM; | ||
435 | + | ||
436 | +}]]></programlisting> | ||
437 | + | ||
438 | + <para>e ele seja usado no seguinte arquivo de configuração</para> | ||
439 | + | ||
440 | + <programlisting role="JAVA"><![CDATA[@Configuration | ||
441 | +public class ConfigurationLoader { | ||
442 | + | ||
443 | + private ConfigurationType loadedConfigurationType; | ||
444 | + | ||
445 | + public ConfigurationType getLoadedConfigurationType(){ | ||
446 | + return loadedConfigurationType; | ||
447 | + } | ||
448 | +}]]></programlisting> | ||
449 | + | ||
450 | + <para>O arquivo do tipo <emphasis>properties</emphasis> pode ser criado assim:</para> | ||
451 | + | ||
452 | + <programlisting role="PROPERTIES"><![CDATA[loadedConfigurationType=SYSTEM]]></programlisting> | ||
453 | + | ||
454 | + <note> | ||
455 | + <para> | ||
456 | + O valor definido no arquivo de configuração para atributos do tipo <emphasis>Enum</emphasis> deve | ||
457 | + ser idêntico ao nome da constante definida no <emphasis>Enum</emphasis>, inclusive casando letras maiúsculas e | ||
458 | + minúsculas. De fato, o valor da propriedade deve casar com o valor retornado no código: | ||
459 | + <emphasis>Enum.name()</emphasis>. | ||
460 | + </para> | ||
461 | + | ||
462 | + <para> | ||
463 | + Caso o valor definido no arquivo de configuração não case com nenhuma constante definida no <emphasis>Enum</emphasis>, | ||
464 | + uma exceção de tipo <emphasis>ConfigurationException</emphasis> de causa <emphasis>ConversionException</emphasis> | ||
465 | + será lançada. Já se à propriedade for atribuido um valor vazio, o atributo do tipo <emphasis>Enum</emphasis> receberá | ||
466 | + o valor <emphasis>null</emphasis>. | ||
467 | + </para> | ||
468 | + </note> | ||
469 | + </entry> | ||
470 | + </row> | ||
471 | + </tbody> | ||
472 | + </tgroup> | ||
473 | + </informaltable> | ||
431 | 474 | ||
432 | </section> | 475 | </section> |
433 | 476 |
documentation/reference/pt-BR/master.xml
@@ -14,7 +14,7 @@ | @@ -14,7 +14,7 @@ | ||
14 | </para> | 14 | </para> |
15 | <note> | 15 | <note> |
16 | <para> | 16 | <para> |
17 | - Esta documentação refere-se à release &version; do <emphasis>Demoiselle Framework</emphasis> | 17 | + Esta documentação refere-se à release 2.4.0-RC2 do <emphasis>Demoiselle Framework</emphasis> |
18 | e pode diferir significativamente das versões anteriores. | 18 | e pode diferir significativamente das versões anteriores. |
19 | </para> | 19 | </para> |
20 | </note> | 20 | </note> |
documentation/reference/pt-BR/security.xml
@@ -508,13 +508,13 @@ class GerenciadorBookmark { | @@ -508,13 +508,13 @@ class GerenciadorBookmark { | ||
508 | <programlisting role="JAVA"><![CDATA[public class MeuAuthenticator implements Authenticator { | 508 | <programlisting role="JAVA"><![CDATA[public class MeuAuthenticator implements Authenticator { |
509 | 509 | ||
510 | @Override | 510 | @Override |
511 | - public boolean authenticate() { | 511 | + public boolean authenticate() throws Exception { |
512 | // Escreva aqui seu codigo de autenticacao e retorne true caso o processo seja um sucesso | 512 | // Escreva aqui seu codigo de autenticacao e retorne true caso o processo seja um sucesso |
513 | return true; | 513 | return true; |
514 | } | 514 | } |
515 | 515 | ||
516 | @Override | 516 | @Override |
517 | - public Principal getUser() { | 517 | + public User getUser(){ |
518 | // Obtenha dados sobre o usuario autenticado e retorne na forma da interface javax.security.Principal | 518 | // Obtenha dados sobre o usuario autenticado e retorne na forma da interface javax.security.Principal |
519 | return new Principal(){ | 519 | return new Principal(){ |
520 | public String getName(){ | 520 | public String getName(){ |
@@ -524,7 +524,7 @@ class GerenciadorBookmark { | @@ -524,7 +524,7 @@ class GerenciadorBookmark { | ||
524 | } | 524 | } |
525 | 525 | ||
526 | @Override | 526 | @Override |
527 | - public void unAuthenticate() { | 527 | + public void unauthenticate() throws Exception { |
528 | // Remova qualquer informacao de autenticacao do usuario, apas o retorno deste metodo o usuario | 528 | // Remova qualquer informacao de autenticacao do usuario, apas o retorno deste metodo o usuario |
529 | // deve ser considerado nao autenticado. | 529 | // deve ser considerado nao autenticado. |
530 | } | 530 | } |
@@ -532,13 +532,13 @@ class GerenciadorBookmark { | @@ -532,13 +532,13 @@ class GerenciadorBookmark { | ||
532 | <programlisting role="JAVA"><![CDATA[public class MeuAuthorizer implements Authorizer { | 532 | <programlisting role="JAVA"><![CDATA[public class MeuAuthorizer implements Authorizer { |
533 | 533 | ||
534 | @Override | 534 | @Override |
535 | - public boolean hasRole(String role) { | 535 | + public boolean hasRole(String role) throws Exception { |
536 | // Verifique se o usuario autenticado tem o papel informado, retorne true em caso positivo | 536 | // Verifique se o usuario autenticado tem o papel informado, retorne true em caso positivo |
537 | return false; | 537 | return false; |
538 | } | 538 | } |
539 | 539 | ||
540 | @Override | 540 | @Override |
541 | - public boolean hasPermission(String resource, String operation) { | 541 | + public boolean hasPermission(String resource, String operation) throws Exception { |
542 | // Escreva aqui seu codigo de verificação de permissao | 542 | // Escreva aqui seu codigo de verificação de permissao |
543 | return false; | 543 | return false; |
544 | } | 544 | } |
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationEnumValueExtractor.java
@@ -58,11 +58,11 @@ public class ConfigurationEnumValueExtractor implements ConfigurationValueExtrac | @@ -58,11 +58,11 @@ public class ConfigurationEnumValueExtractor implements ConfigurationValueExtrac | ||
58 | public Object getValue(String prefix, String key, Field field, Configuration configuration) throws Exception { | 58 | public Object getValue(String prefix, String key, Field field, Configuration configuration) throws Exception { |
59 | String value = configuration.getString(prefix + key); | 59 | String value = configuration.getString(prefix + key); |
60 | 60 | ||
61 | - if (value!=null){ | 61 | + if (value!=null && !value.trim().equals("")){ |
62 | Object enums[] = field.getType().getEnumConstants(); | 62 | Object enums[] = field.getType().getEnumConstants(); |
63 | 63 | ||
64 | for (int i=0; i<enums.length; i++){ | 64 | for (int i=0; i<enums.length; i++){ |
65 | - if ( ((Enum<?>)enums[i]).toString().equalsIgnoreCase(value) ){ | 65 | + if ( ((Enum<?>)enums[i]).name().equals(value) ){ |
66 | return enums[i]; | 66 | return enums[i]; |
67 | } | 67 | } |
68 | } | 68 | } |
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationMapValueExtractor.java
@@ -50,12 +50,6 @@ import org.apache.commons.configuration.Configuration; | @@ -50,12 +50,6 @@ import org.apache.commons.configuration.Configuration; | ||
50 | import br.gov.frameworkdemoiselle.annotation.Priority; | 50 | import br.gov.frameworkdemoiselle.annotation.Priority; |
51 | import br.gov.frameworkdemoiselle.configuration.ConfigurationValueExtractor; | 51 | import br.gov.frameworkdemoiselle.configuration.ConfigurationValueExtractor; |
52 | 52 | ||
53 | -/** | ||
54 | - * | ||
55 | - * TODO Adicionar verificação da existência de duas ou mais configurações JDBC com mesmo nome. Lançar INFO ou Exceção. | ||
56 | - * | ||
57 | - */ | ||
58 | - | ||
59 | @Priority(L2_PRIORITY) | 53 | @Priority(L2_PRIORITY) |
60 | public class ConfigurationMapValueExtractor implements ConfigurationValueExtractor { | 54 | public class ConfigurationMapValueExtractor implements ConfigurationValueExtractor { |
61 | 55 | ||
@@ -63,7 +57,7 @@ public class ConfigurationMapValueExtractor implements ConfigurationValueExtract | @@ -63,7 +57,7 @@ public class ConfigurationMapValueExtractor implements ConfigurationValueExtract | ||
63 | public Object getValue(String prefix, String key, Field field, Configuration configuration) throws Exception { | 57 | public Object getValue(String prefix, String key, Field field, Configuration configuration) throws Exception { |
64 | Map<String, Object> value = null; | 58 | Map<String, Object> value = null; |
65 | 59 | ||
66 | - String regexp = "^(" + prefix + ")((.+)\\.)?(" + key + ")$"; | 60 | + String regexp = "^(" + prefix + ")(" + key + ")(\\.(\\w+))?$"; |
67 | Pattern pattern = Pattern.compile(regexp); | 61 | Pattern pattern = Pattern.compile(regexp); |
68 | 62 | ||
69 | for (Iterator<String> iter = configuration.getKeys(); iter.hasNext();) { | 63 | for (Iterator<String> iter = configuration.getKeys(); iter.hasNext();) { |
@@ -71,14 +65,16 @@ public class ConfigurationMapValueExtractor implements ConfigurationValueExtract | @@ -71,14 +65,16 @@ public class ConfigurationMapValueExtractor implements ConfigurationValueExtract | ||
71 | Matcher matcher = pattern.matcher(iterKey); | 65 | Matcher matcher = pattern.matcher(iterKey); |
72 | 66 | ||
73 | if (matcher.matches()) { | 67 | if (matcher.matches()) { |
74 | - String confKey = matcher.group(1) + (matcher.group(2) == null ? "" : matcher.group(2)) | ||
75 | - + matcher.group(4); | 68 | + String confKey = matcher.group(1) + matcher.group(2) + ( matcher.group(3)!=null ? matcher.group(3) : "" ); |
69 | + | ||
70 | + /*matcher.group(1) + (matcher.group(2) == null ? "" : matcher.group(2)) | ||
71 | + + matcher.group(4);*/ | ||
76 | 72 | ||
77 | if (value == null) { | 73 | if (value == null) { |
78 | value = new HashMap<String, Object>(); | 74 | value = new HashMap<String, Object>(); |
79 | } | 75 | } |
80 | 76 | ||
81 | - String mapKey = matcher.group(3) == null ? "default" : matcher.group(3); | 77 | + String mapKey = matcher.group(4) == null ? "default" : matcher.group(4); |
82 | value.put(mapKey, configuration.getString(confKey)); | 78 | value.put(mapKey, configuration.getString(confKey)); |
83 | } | 79 | } |
84 | } | 80 | } |
impl/core/src/test/java/configuration/field/enumeration/AbstractEnumValueConfig.java
0 → 100644
@@ -0,0 +1,62 @@ | @@ -0,0 +1,62 @@ | ||
1 | +/* | ||
2 | + * Demoiselle Framework | ||
3 | + * Copyright (C) 2010 SERPRO | ||
4 | + * ---------------------------------------------------------------------------- | ||
5 | + * This file is part of Demoiselle Framework. | ||
6 | + * | ||
7 | + * Demoiselle Framework is free software; you can redistribute it and/or | ||
8 | + * modify it under the terms of the GNU Lesser General Public License version 3 | ||
9 | + * as published by the Free Software Foundation. | ||
10 | + * | ||
11 | + * This program is distributed in the hope that it will be useful, | ||
12 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | + * GNU General Public License for more details. | ||
15 | + * | ||
16 | + * You should have received a copy of the GNU Lesser General Public License version 3 | ||
17 | + * along with this program; if not, see <http://www.gnu.org/licenses/> | ||
18 | + * or write to the Free Software Foundation, Inc., 51 Franklin Street, | ||
19 | + * Fifth Floor, Boston, MA 02110-1301, USA. | ||
20 | + * ---------------------------------------------------------------------------- | ||
21 | + * Este arquivo é parte do Framework Demoiselle. | ||
22 | + * | ||
23 | + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou | ||
24 | + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação | ||
25 | + * do Software Livre (FSF). | ||
26 | + * | ||
27 | + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA | ||
28 | + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou | ||
29 | + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português | ||
30 | + * para maiores detalhes. | ||
31 | + * | ||
32 | + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título | ||
33 | + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/> | ||
34 | + * ou escreva para a Fundação do Software Livre (FSF) Inc., | ||
35 | + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. | ||
36 | + */ | ||
37 | +package configuration.field.enumeration; | ||
38 | + | ||
39 | +import java.io.Serializable; | ||
40 | + | ||
41 | +public abstract class AbstractEnumValueConfig implements Serializable { | ||
42 | + | ||
43 | + private static final long serialVersionUID = 1L; | ||
44 | + | ||
45 | + private ListOfEnum enumValue; | ||
46 | + | ||
47 | + private ListOfEnum anotherValue; | ||
48 | + | ||
49 | + private ListOfEnum emptyValue; | ||
50 | + | ||
51 | + public ListOfEnum getEnumValue() { | ||
52 | + return enumValue; | ||
53 | + } | ||
54 | + | ||
55 | + public ListOfEnum getAnotherValue() { | ||
56 | + return anotherValue; | ||
57 | + } | ||
58 | + | ||
59 | + public ListOfEnum getEmptyValue() { | ||
60 | + return emptyValue; | ||
61 | + } | ||
62 | +} |
impl/core/src/test/java/configuration/field/enumeration/ConfigurationEnumValueTest.java
0 → 100644
@@ -0,0 +1,84 @@ | @@ -0,0 +1,84 @@ | ||
1 | +/* | ||
2 | + * Demoiselle Framework | ||
3 | + * Copyright (C) 2010 SERPRO | ||
4 | + * ---------------------------------------------------------------------------- | ||
5 | + * This file is part of Demoiselle Framework. | ||
6 | + * | ||
7 | + * Demoiselle Framework is free software; you can redistribute it and/or | ||
8 | + * modify it under the terms of the GNU Lesser General Public License version 3 | ||
9 | + * as published by the Free Software Foundation. | ||
10 | + * | ||
11 | + * This program is distributed in the hope that it will be useful, | ||
12 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | + * GNU General Public License for more details. | ||
15 | + * | ||
16 | + * You should have received a copy of the GNU Lesser General Public License version 3 | ||
17 | + * along with this program; if not, see <http://www.gnu.org/licenses/> | ||
18 | + * or write to the Free Software Foundation, Inc., 51 Franklin Street, | ||
19 | + * Fifth Floor, Boston, MA 02110-1301, USA. | ||
20 | + * ---------------------------------------------------------------------------- | ||
21 | + * Este arquivo é parte do Framework Demoiselle. | ||
22 | + * | ||
23 | + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou | ||
24 | + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação | ||
25 | + * do Software Livre (FSF). | ||
26 | + * | ||
27 | + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA | ||
28 | + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou | ||
29 | + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português | ||
30 | + * para maiores detalhes. | ||
31 | + * | ||
32 | + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título | ||
33 | + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/> | ||
34 | + * ou escreva para a Fundação do Software Livre (FSF) Inc., | ||
35 | + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. | ||
36 | + */ | ||
37 | +package configuration.field.enumeration; | ||
38 | + | ||
39 | +import javax.inject.Inject; | ||
40 | + | ||
41 | +import org.jboss.arquillian.container.test.api.Deployment; | ||
42 | +import org.jboss.arquillian.junit.Arquillian; | ||
43 | +import org.jboss.shrinkwrap.api.spec.JavaArchive; | ||
44 | +import org.junit.Assert; | ||
45 | +import org.junit.Test; | ||
46 | +import org.junit.runner.RunWith; | ||
47 | + | ||
48 | +import test.Tests; | ||
49 | +import br.gov.frameworkdemoiselle.configuration.ConfigurationException; | ||
50 | + | ||
51 | +@RunWith(Arquillian.class) | ||
52 | +public class ConfigurationEnumValueTest { | ||
53 | + | ||
54 | + private static final String PATH = "src/test/resources/configuration/field/enumeration"; | ||
55 | + | ||
56 | + @Inject | ||
57 | + private PropertiesEnumConfig propertiesEnumConfig; | ||
58 | + | ||
59 | + @Inject | ||
60 | + private XmlEnumConfig xmlEnumConfig; | ||
61 | + | ||
62 | + @Inject | ||
63 | + private WrongPropertyEnumConfig wrongPropertyEnumConfig; | ||
64 | + | ||
65 | + @Deployment | ||
66 | + public static JavaArchive createDeployment() { | ||
67 | + JavaArchive deployment = Tests.createDeployment(ConfigurationEnumValueTest.class); | ||
68 | + deployment.addAsResource(Tests.createFileAsset(PATH + "/demoiselle.properties"), "demoiselle.properties"); | ||
69 | + deployment.addAsResource(Tests.createFileAsset(PATH + "/demoiselle.xml"), "demoiselle.xml"); | ||
70 | + return deployment; | ||
71 | + } | ||
72 | + | ||
73 | + @Test | ||
74 | + public void loadEnumConfig(){ | ||
75 | + Assert.assertEquals(ListOfEnum.VALUE_2, propertiesEnumConfig.getEnumValue()); | ||
76 | + Assert.assertEquals(ListOfEnum.VALUE_2, xmlEnumConfig.getEnumValue()); | ||
77 | + Assert.assertNull(propertiesEnumConfig.getEmptyValue()); | ||
78 | + } | ||
79 | + | ||
80 | + @Test(expected=ConfigurationException.class) | ||
81 | + public void checkConverstionException(){ | ||
82 | + wrongPropertyEnumConfig.getAnotherValue(); | ||
83 | + } | ||
84 | +} |
impl/core/src/test/java/configuration/field/enumeration/ListOfEnum.java
0 → 100644
@@ -0,0 +1,44 @@ | @@ -0,0 +1,44 @@ | ||
1 | +/* | ||
2 | + * Demoiselle Framework | ||
3 | + * Copyright (C) 2010 SERPRO | ||
4 | + * ---------------------------------------------------------------------------- | ||
5 | + * This file is part of Demoiselle Framework. | ||
6 | + * | ||
7 | + * Demoiselle Framework is free software; you can redistribute it and/or | ||
8 | + * modify it under the terms of the GNU Lesser General Public License version 3 | ||
9 | + * as published by the Free Software Foundation. | ||
10 | + * | ||
11 | + * This program is distributed in the hope that it will be useful, | ||
12 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | + * GNU General Public License for more details. | ||
15 | + * | ||
16 | + * You should have received a copy of the GNU Lesser General Public License version 3 | ||
17 | + * along with this program; if not, see <http://www.gnu.org/licenses/> | ||
18 | + * or write to the Free Software Foundation, Inc., 51 Franklin Street, | ||
19 | + * Fifth Floor, Boston, MA 02110-1301, USA. | ||
20 | + * ---------------------------------------------------------------------------- | ||
21 | + * Este arquivo é parte do Framework Demoiselle. | ||
22 | + * | ||
23 | + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou | ||
24 | + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação | ||
25 | + * do Software Livre (FSF). | ||
26 | + * | ||
27 | + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA | ||
28 | + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou | ||
29 | + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português | ||
30 | + * para maiores detalhes. | ||
31 | + * | ||
32 | + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título | ||
33 | + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/> | ||
34 | + * ou escreva para a Fundação do Software Livre (FSF) Inc., | ||
35 | + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. | ||
36 | + */ | ||
37 | +package configuration.field.enumeration; | ||
38 | + | ||
39 | + | ||
40 | +public enum ListOfEnum { | ||
41 | + | ||
42 | + VALUE_1 , VALUE_2 , VALUE_3; | ||
43 | + | ||
44 | +} |
impl/core/src/test/java/configuration/field/enumeration/PropertiesEnumConfig.java
0 → 100644
@@ -0,0 +1,47 @@ | @@ -0,0 +1,47 @@ | ||
1 | +/* | ||
2 | + * Demoiselle Framework | ||
3 | + * Copyright (C) 2010 SERPRO | ||
4 | + * ---------------------------------------------------------------------------- | ||
5 | + * This file is part of Demoiselle Framework. | ||
6 | + * | ||
7 | + * Demoiselle Framework is free software; you can redistribute it and/or | ||
8 | + * modify it under the terms of the GNU Lesser General Public License version 3 | ||
9 | + * as published by the Free Software Foundation. | ||
10 | + * | ||
11 | + * This program is distributed in the hope that it will be useful, | ||
12 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | + * GNU General Public License for more details. | ||
15 | + * | ||
16 | + * You should have received a copy of the GNU Lesser General Public License version 3 | ||
17 | + * along with this program; if not, see <http://www.gnu.org/licenses/> | ||
18 | + * or write to the Free Software Foundation, Inc., 51 Franklin Street, | ||
19 | + * Fifth Floor, Boston, MA 02110-1301, USA. | ||
20 | + * ---------------------------------------------------------------------------- | ||
21 | + * Este arquivo é parte do Framework Demoiselle. | ||
22 | + * | ||
23 | + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou | ||
24 | + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação | ||
25 | + * do Software Livre (FSF). | ||
26 | + * | ||
27 | + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA | ||
28 | + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou | ||
29 | + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português | ||
30 | + * para maiores detalhes. | ||
31 | + * | ||
32 | + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título | ||
33 | + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/> | ||
34 | + * ou escreva para a Fundação do Software Livre (FSF) Inc., | ||
35 | + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. | ||
36 | + */ | ||
37 | +package configuration.field.enumeration; | ||
38 | + | ||
39 | +import br.gov.frameworkdemoiselle.configuration.ConfigType; | ||
40 | +import br.gov.frameworkdemoiselle.configuration.Configuration; | ||
41 | + | ||
42 | +@Configuration(resource="demoiselle" , type=ConfigType.PROPERTIES , prefix="prefix1") | ||
43 | +public class PropertiesEnumConfig extends AbstractEnumValueConfig { | ||
44 | + | ||
45 | + private static final long serialVersionUID = 1L; | ||
46 | + | ||
47 | +} |
impl/core/src/test/java/configuration/field/enumeration/WrongPropertyEnumConfig.java
0 → 100644
@@ -0,0 +1,47 @@ | @@ -0,0 +1,47 @@ | ||
1 | +/* | ||
2 | + * Demoiselle Framework | ||
3 | + * Copyright (C) 2010 SERPRO | ||
4 | + * ---------------------------------------------------------------------------- | ||
5 | + * This file is part of Demoiselle Framework. | ||
6 | + * | ||
7 | + * Demoiselle Framework is free software; you can redistribute it and/or | ||
8 | + * modify it under the terms of the GNU Lesser General Public License version 3 | ||
9 | + * as published by the Free Software Foundation. | ||
10 | + * | ||
11 | + * This program is distributed in the hope that it will be useful, | ||
12 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | + * GNU General Public License for more details. | ||
15 | + * | ||
16 | + * You should have received a copy of the GNU Lesser General Public License version 3 | ||
17 | + * along with this program; if not, see <http://www.gnu.org/licenses/> | ||
18 | + * or write to the Free Software Foundation, Inc., 51 Franklin Street, | ||
19 | + * Fifth Floor, Boston, MA 02110-1301, USA. | ||
20 | + * ---------------------------------------------------------------------------- | ||
21 | + * Este arquivo é parte do Framework Demoiselle. | ||
22 | + * | ||
23 | + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou | ||
24 | + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação | ||
25 | + * do Software Livre (FSF). | ||
26 | + * | ||
27 | + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA | ||
28 | + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou | ||
29 | + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português | ||
30 | + * para maiores detalhes. | ||
31 | + * | ||
32 | + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título | ||
33 | + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/> | ||
34 | + * ou escreva para a Fundação do Software Livre (FSF) Inc., | ||
35 | + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. | ||
36 | + */ | ||
37 | +package configuration.field.enumeration; | ||
38 | + | ||
39 | +import br.gov.frameworkdemoiselle.configuration.ConfigType; | ||
40 | +import br.gov.frameworkdemoiselle.configuration.Configuration; | ||
41 | + | ||
42 | +@Configuration(resource="demoiselle" , type=ConfigType.PROPERTIES , prefix="prefix2") | ||
43 | +public class WrongPropertyEnumConfig extends AbstractEnumValueConfig { | ||
44 | + | ||
45 | + private static final long serialVersionUID = 1L; | ||
46 | + | ||
47 | +} |
impl/core/src/test/java/configuration/field/enumeration/XmlEnumConfig.java
0 → 100644
@@ -0,0 +1,47 @@ | @@ -0,0 +1,47 @@ | ||
1 | +/* | ||
2 | + * Demoiselle Framework | ||
3 | + * Copyright (C) 2010 SERPRO | ||
4 | + * ---------------------------------------------------------------------------- | ||
5 | + * This file is part of Demoiselle Framework. | ||
6 | + * | ||
7 | + * Demoiselle Framework is free software; you can redistribute it and/or | ||
8 | + * modify it under the terms of the GNU Lesser General Public License version 3 | ||
9 | + * as published by the Free Software Foundation. | ||
10 | + * | ||
11 | + * This program is distributed in the hope that it will be useful, | ||
12 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | + * GNU General Public License for more details. | ||
15 | + * | ||
16 | + * You should have received a copy of the GNU Lesser General Public License version 3 | ||
17 | + * along with this program; if not, see <http://www.gnu.org/licenses/> | ||
18 | + * or write to the Free Software Foundation, Inc., 51 Franklin Street, | ||
19 | + * Fifth Floor, Boston, MA 02110-1301, USA. | ||
20 | + * ---------------------------------------------------------------------------- | ||
21 | + * Este arquivo é parte do Framework Demoiselle. | ||
22 | + * | ||
23 | + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou | ||
24 | + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação | ||
25 | + * do Software Livre (FSF). | ||
26 | + * | ||
27 | + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA | ||
28 | + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou | ||
29 | + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português | ||
30 | + * para maiores detalhes. | ||
31 | + * | ||
32 | + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título | ||
33 | + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/> | ||
34 | + * ou escreva para a Fundação do Software Livre (FSF) Inc., | ||
35 | + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. | ||
36 | + */ | ||
37 | +package configuration.field.enumeration; | ||
38 | + | ||
39 | +import br.gov.frameworkdemoiselle.configuration.ConfigType; | ||
40 | +import br.gov.frameworkdemoiselle.configuration.Configuration; | ||
41 | + | ||
42 | +@Configuration(resource="demoiselle" , type=ConfigType.XML , prefix="prefix1") | ||
43 | +public class XmlEnumConfig extends AbstractEnumValueConfig { | ||
44 | + | ||
45 | + private static final long serialVersionUID = 1L; | ||
46 | + | ||
47 | +} |
impl/core/src/test/java/configuration/field/map/PropertiesMapFieldConfig.java
@@ -39,6 +39,6 @@ package configuration.field.map; | @@ -39,6 +39,6 @@ package configuration.field.map; | ||
39 | import static br.gov.frameworkdemoiselle.configuration.ConfigType.PROPERTIES; | 39 | import static br.gov.frameworkdemoiselle.configuration.ConfigType.PROPERTIES; |
40 | import br.gov.frameworkdemoiselle.configuration.Configuration; | 40 | import br.gov.frameworkdemoiselle.configuration.Configuration; |
41 | 41 | ||
42 | -@Configuration(type = PROPERTIES) | 42 | +@Configuration(type = PROPERTIES,prefix="configuration.test") |
43 | public class PropertiesMapFieldConfig extends AbstractMapFieldConfig { | 43 | public class PropertiesMapFieldConfig extends AbstractMapFieldConfig { |
44 | } | 44 | } |
impl/core/src/test/resources/configuration/field/enumeration/demoiselle.properties
0 → 100644
@@ -0,0 +1,38 @@ | @@ -0,0 +1,38 @@ | ||
1 | +# Demoiselle Framework | ||
2 | +# Copyright (C) 2010 SERPRO | ||
3 | +# ---------------------------------------------------------------------------- | ||
4 | +# This file is part of Demoiselle Framework. | ||
5 | +# | ||
6 | +# Demoiselle Framework is free software; you can redistribute it and/or | ||
7 | +# modify it under the terms of the GNU Lesser General Public License version 3 | ||
8 | +# as published by the Free Software Foundation. | ||
9 | +# | ||
10 | +# This program is distributed in the hope that it will be useful, | ||
11 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | +# GNU General Public License for more details. | ||
14 | +# | ||
15 | +# You should have received a copy of the GNU Lesser General Public License version 3 | ||
16 | +# along with this program; if not, see <http://www.gnu.org/licenses/> | ||
17 | +# or write to the Free Software Foundation, Inc., 51 Franklin Street, | ||
18 | +# Fifth Floor, Boston, MA 02110-1301, USA. | ||
19 | +# ---------------------------------------------------------------------------- | ||
20 | +# Este arquivo é parte do Framework Demoiselle. | ||
21 | +# | ||
22 | +# O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou | ||
23 | +# modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação | ||
24 | +# do Software Livre (FSF). | ||
25 | +# | ||
26 | +# Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA | ||
27 | +# GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou | ||
28 | +# APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português | ||
29 | +# para maiores detalhes. | ||
30 | +# | ||
31 | +# Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título | ||
32 | +# "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/> | ||
33 | +# ou escreva para a Fundação do Software Livre (FSF) Inc., | ||
34 | +# 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. | ||
35 | + | ||
36 | +prefix1.enumValue=VALUE_2 | ||
37 | +prefix1.emptyValue= | ||
38 | +prefix2.anotherValue=value_2 |
impl/core/src/test/resources/configuration/field/enumeration/demoiselle.xml
0 → 100644
@@ -0,0 +1,45 @@ | @@ -0,0 +1,45 @@ | ||
1 | +<!-- | ||
2 | + Demoiselle Framework | ||
3 | + Copyright (C) 2010 SERPRO | ||
4 | + ============================================================================ | ||
5 | + This file is part of Demoiselle Framework. | ||
6 | + | ||
7 | + Demoiselle Framework is free software; you can redistribute it and/or | ||
8 | + modify it under the terms of the GNU Lesser General Public License version 3 | ||
9 | + as published by the Free Software Foundation. | ||
10 | + | ||
11 | + This program is distributed in the hope that it will be useful, | ||
12 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | + GNU General Public License for more details. | ||
15 | + | ||
16 | + You should have received a copy of the GNU Lesser General Public License version 3 | ||
17 | + along with this program; if not, see <http://www.gnu.org/licenses /> | ||
18 | + or write to the Free Software Foundation, Inc., 51 Franklin Street, | ||
19 | + Fifth Floor, Boston, MA 02110-1301, USA. | ||
20 | + ============================================================================ | ||
21 | + Este arquivo é parte do Framework Demoiselle. | ||
22 | + | ||
23 | + O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou | ||
24 | + modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação | ||
25 | + do Software Livre (FSF). | ||
26 | + | ||
27 | + Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA | ||
28 | + GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou | ||
29 | + APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português | ||
30 | + para maiores detalhes. | ||
31 | + | ||
32 | + Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título | ||
33 | + "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses /> | ||
34 | + ou escreva para a Fundação do Software Livre (FSF) Inc., | ||
35 | + 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. | ||
36 | +--> | ||
37 | + | ||
38 | +<configuration> | ||
39 | + <prefix1> | ||
40 | + <enumValue>VALUE_2</enumValue> | ||
41 | + </prefix1> | ||
42 | + <prefix2> | ||
43 | + <anotherValue>value_2</anotherValue> | ||
44 | + </prefix2> | ||
45 | +</configuration> |
impl/core/src/test/resources/configuration/field/map/demoiselle.properties
@@ -33,9 +33,9 @@ | @@ -33,9 +33,9 @@ | ||
33 | # ou escreva para a Fundação do Software Livre (FSF) Inc., | 33 | # ou escreva para a Fundação do Software Livre (FSF) Inc., |
34 | # 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. | 34 | # 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. |
35 | 35 | ||
36 | -item1.stringWithDefinedKeyMap=demoiselle | ||
37 | -item2.stringWithDefinedKeyMap=framework | ||
38 | -item1.emptyValueMap= | ||
39 | -item2.emptyValueMap= | 36 | +configuration.test.stringWithDefinedKeyMap.item1=demoiselle |
37 | +configuration.test.stringWithDefinedKeyMap.item2=framework | ||
38 | +configuration.test.emptyValueMap.item1= | ||
39 | +configuration.test.emptyValueMap.item2= | ||
40 | 40 | ||
41 | -stringWithUndefinedKeyMap=undefined | 41 | +configuration.test.stringWithUndefinedKeyMap=undefined |
impl/core/src/test/resources/configuration/field/map/demoiselle.xml
@@ -36,17 +36,15 @@ | @@ -36,17 +36,15 @@ | ||
36 | --> | 36 | --> |
37 | 37 | ||
38 | <configuration> | 38 | <configuration> |
39 | - <item1> | ||
40 | - <stringWithDefinedKeyMap>demoiselle</stringWithDefinedKeyMap> | ||
41 | - </item1> | ||
42 | - <item2> | ||
43 | - <stringWithDefinedKeyMap>framework</stringWithDefinedKeyMap> | ||
44 | - </item2> | ||
45 | - <stringWithUndefinedKeyMap>undefined</stringWithUndefinedKeyMap> | ||
46 | - <item1> | ||
47 | - <emptyValueMap></emptyValueMap> | ||
48 | - </item1> | ||
49 | - <item2> | ||
50 | - <emptyValueMap></emptyValueMap> | ||
51 | - </item2> | 39 | + <stringWithDefinedKeyMap> |
40 | + <item1>demoiselle</item1> | ||
41 | + <item2>framework</item2> | ||
42 | + </stringWithDefinedKeyMap> | ||
43 | + | ||
44 | + <stringWithUndefinedKeyMap>undefined</stringWithUndefinedKeyMap> | ||
45 | + | ||
46 | + <emptyValueMap> | ||
47 | + <item1></item1> | ||
48 | + <item2></item2> | ||
49 | + </emptyValueMap> | ||
52 | </configuration> | 50 | </configuration> |
impl/extension/jdbc/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/JDBCConfig.java
@@ -37,10 +37,10 @@ | @@ -37,10 +37,10 @@ | ||
37 | package br.gov.frameworkdemoiselle.internal.configuration; | 37 | package br.gov.frameworkdemoiselle.internal.configuration; |
38 | 38 | ||
39 | import java.io.Serializable; | 39 | import java.io.Serializable; |
40 | -import java.util.Map; | ||
41 | 40 | ||
42 | import br.gov.frameworkdemoiselle.annotation.Name; | 41 | import br.gov.frameworkdemoiselle.annotation.Name; |
43 | import br.gov.frameworkdemoiselle.configuration.Configuration; | 42 | import br.gov.frameworkdemoiselle.configuration.Configuration; |
43 | + | ||
44 | /** | 44 | /** |
45 | * Provide used to access the configurations of the JDBC connection | 45 | * Provide used to access the configurations of the JDBC connection |
46 | * | 46 | * |
@@ -56,41 +56,41 @@ public class JDBCConfig implements Serializable { | @@ -56,41 +56,41 @@ public class JDBCConfig implements Serializable { | ||
56 | private String defaultDataSourceName; | 56 | private String defaultDataSourceName; |
57 | 57 | ||
58 | @Name("jndi.name") | 58 | @Name("jndi.name") |
59 | - private Map<String, String> jndiName; | 59 | + private JDBCConfigurationStore jndiName; |
60 | 60 | ||
61 | @Name("driver.class") | 61 | @Name("driver.class") |
62 | - private Map<String, String> driverClass; | 62 | + private JDBCConfigurationStore driverClass; |
63 | 63 | ||
64 | @Name("url") | 64 | @Name("url") |
65 | - private Map<String, String> url; | 65 | + private JDBCConfigurationStore url; |
66 | 66 | ||
67 | @Name("username") | 67 | @Name("username") |
68 | - private Map<String, String> username; | 68 | + private JDBCConfigurationStore username; |
69 | 69 | ||
70 | @Name("password") | 70 | @Name("password") |
71 | - private Map<String, String> password; | 71 | + private JDBCConfigurationStore password; |
72 | 72 | ||
73 | public String getDefaultDataSourceName() { | 73 | public String getDefaultDataSourceName() { |
74 | return defaultDataSourceName; | 74 | return defaultDataSourceName; |
75 | } | 75 | } |
76 | 76 | ||
77 | - public Map<String, String> getJndiName() { | 77 | + public JDBCConfigurationStore getJndiName() { |
78 | return jndiName; | 78 | return jndiName; |
79 | } | 79 | } |
80 | 80 | ||
81 | - public Map<String, String> getDriverClass() { | 81 | + public JDBCConfigurationStore getDriverClass() { |
82 | return driverClass; | 82 | return driverClass; |
83 | } | 83 | } |
84 | 84 | ||
85 | - public Map<String, String> getUrl() { | 85 | + public JDBCConfigurationStore getUrl() { |
86 | return url; | 86 | return url; |
87 | } | 87 | } |
88 | 88 | ||
89 | - public Map<String, String> getUsername() { | 89 | + public JDBCConfigurationStore getUsername() { |
90 | return username; | 90 | return username; |
91 | } | 91 | } |
92 | 92 | ||
93 | - public Map<String, String> getPassword() { | 93 | + public JDBCConfigurationStore getPassword() { |
94 | return password; | 94 | return password; |
95 | } | 95 | } |
96 | } | 96 | } |
impl/extension/jdbc/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/JDBCConfigValueExtractor.java
0 → 100644
@@ -0,0 +1,90 @@ | @@ -0,0 +1,90 @@ | ||
1 | +/* | ||
2 | + * Demoiselle Framework | ||
3 | + * Copyright (C) 2010 SERPRO | ||
4 | + * ---------------------------------------------------------------------------- | ||
5 | + * This file is part of Demoiselle Framework. | ||
6 | + * | ||
7 | + * Demoiselle Framework is free software; you can redistribute it and/or | ||
8 | + * modify it under the terms of the GNU Lesser General Public License version 3 | ||
9 | + * as published by the Free Software Foundation. | ||
10 | + * | ||
11 | + * This program is distributed in the hope that it will be useful, | ||
12 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | + * GNU General Public License for more details. | ||
15 | + * | ||
16 | + * You should have received a copy of the GNU Lesser General Public License version 3 | ||
17 | + * along with this program; if not, see <http://www.gnu.org/licenses/> | ||
18 | + * or write to the Free Software Foundation, Inc., 51 Franklin Street, | ||
19 | + * Fifth Floor, Boston, MA 02110-1301, USA. | ||
20 | + * ---------------------------------------------------------------------------- | ||
21 | + * Este arquivo é parte do Framework Demoiselle. | ||
22 | + * | ||
23 | + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou | ||
24 | + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação | ||
25 | + * do Software Livre (FSF). | ||
26 | + * | ||
27 | + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA | ||
28 | + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou | ||
29 | + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português | ||
30 | + * para maiores detalhes. | ||
31 | + * | ||
32 | + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título | ||
33 | + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/> | ||
34 | + * ou escreva para a Fundação do Software Livre (FSF) Inc., | ||
35 | + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. | ||
36 | + */ | ||
37 | +package br.gov.frameworkdemoiselle.internal.configuration; | ||
38 | + | ||
39 | +import static br.gov.frameworkdemoiselle.annotation.Priority.L2_PRIORITY; | ||
40 | + | ||
41 | +import java.lang.reflect.Field; | ||
42 | +import java.util.Iterator; | ||
43 | +import java.util.regex.Matcher; | ||
44 | +import java.util.regex.Pattern; | ||
45 | + | ||
46 | +import org.apache.commons.configuration.Configuration; | ||
47 | + | ||
48 | +import br.gov.frameworkdemoiselle.annotation.Priority; | ||
49 | +import br.gov.frameworkdemoiselle.configuration.ConfigurationValueExtractor; | ||
50 | + | ||
51 | +/** | ||
52 | + * | ||
53 | + * TODO Adicionar verificação da existência de duas ou mais configurações JDBC com mesmo nome. Lançar INFO ou Exceção. | ||
54 | + * | ||
55 | + */ | ||
56 | +@Priority(L2_PRIORITY) | ||
57 | +public class JDBCConfigValueExtractor implements ConfigurationValueExtractor { | ||
58 | + | ||
59 | + @Override | ||
60 | + public Object getValue(String prefix, String key, Field field, Configuration configuration) throws Exception { | ||
61 | + JDBCConfigurationStore value = null; | ||
62 | + | ||
63 | + String regexp = "^(" + prefix + ")((.+)\\.)?(" + key + ")$"; | ||
64 | + Pattern pattern = Pattern.compile(regexp); | ||
65 | + | ||
66 | + for (Iterator<String> iter = configuration.getKeys(); iter.hasNext();) { | ||
67 | + String iterKey = iter.next(); | ||
68 | + Matcher matcher = pattern.matcher(iterKey); | ||
69 | + | ||
70 | + if (matcher.matches()) { | ||
71 | + String confKey = matcher.group(1) + (matcher.group(2) == null ? "" : matcher.group(2)) | ||
72 | + + matcher.group(4); | ||
73 | + | ||
74 | + if (value == null) { | ||
75 | + value = new JDBCConfigurationStore(); | ||
76 | + } | ||
77 | + | ||
78 | + String mapKey = matcher.group(3) == null ? "default" : matcher.group(3); | ||
79 | + value.put(mapKey, configuration.getString(confKey)); | ||
80 | + } | ||
81 | + } | ||
82 | + | ||
83 | + return value; | ||
84 | + } | ||
85 | + | ||
86 | + @Override | ||
87 | + public boolean isSupported(Field field) { | ||
88 | + return field.getType() == JDBCConfigurationStore.class; | ||
89 | + } | ||
90 | +} |
impl/extension/jdbc/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/JDBCConfigurationStore.java
0 → 100644
@@ -0,0 +1,80 @@ | @@ -0,0 +1,80 @@ | ||
1 | +package br.gov.frameworkdemoiselle.internal.configuration; | ||
2 | + | ||
3 | +import java.io.Serializable; | ||
4 | +import java.util.Collection; | ||
5 | +import java.util.HashMap; | ||
6 | +import java.util.Map; | ||
7 | +import java.util.Map.Entry; | ||
8 | +import java.util.Set; | ||
9 | + | ||
10 | + | ||
11 | +public class JDBCConfigurationStore implements Cloneable, Serializable { | ||
12 | + | ||
13 | + private static final long serialVersionUID = 1L; | ||
14 | + | ||
15 | + private HashMap<String, String> properties = new HashMap<String, String>(); | ||
16 | + | ||
17 | + public int size() { | ||
18 | + return properties.size(); | ||
19 | + } | ||
20 | + | ||
21 | + public boolean isEmpty() { | ||
22 | + return properties.isEmpty(); | ||
23 | + } | ||
24 | + | ||
25 | + public String get(Object key) { | ||
26 | + return properties.get(key); | ||
27 | + } | ||
28 | + | ||
29 | + public boolean equals(Object o) { | ||
30 | + return properties.equals(o); | ||
31 | + } | ||
32 | + | ||
33 | + public boolean containsKey(Object key) { | ||
34 | + return properties.containsKey(key); | ||
35 | + } | ||
36 | + | ||
37 | + public String put(String key, String value) { | ||
38 | + return properties.put(key, value); | ||
39 | + } | ||
40 | + | ||
41 | + public int hashCode() { | ||
42 | + return properties.hashCode(); | ||
43 | + } | ||
44 | + | ||
45 | + public String toString() { | ||
46 | + return properties.toString(); | ||
47 | + } | ||
48 | + | ||
49 | + public void putAll(Map<? extends String, ? extends String> m) { | ||
50 | + properties.putAll(m); | ||
51 | + } | ||
52 | + | ||
53 | + public String remove(Object key) { | ||
54 | + return properties.remove(key); | ||
55 | + } | ||
56 | + | ||
57 | + public void clear() { | ||
58 | + properties.clear(); | ||
59 | + } | ||
60 | + | ||
61 | + public boolean containsValue(Object value) { | ||
62 | + return properties.containsValue(value); | ||
63 | + } | ||
64 | + | ||
65 | + public Object clone() { | ||
66 | + return properties.clone(); | ||
67 | + } | ||
68 | + | ||
69 | + public Set<String> keySet() { | ||
70 | + return properties.keySet(); | ||
71 | + } | ||
72 | + | ||
73 | + public Collection<String> values() { | ||
74 | + return properties.values(); | ||
75 | + } | ||
76 | + | ||
77 | + public Set<Entry<String, String>> entrySet() { | ||
78 | + return properties.entrySet(); | ||
79 | + } | ||
80 | +} |
impl/extension/jpa/src/test/resources/producer/demoiselle.properties
1 | frameworkdemoiselle.persistence.default.unit.name=pu | 1 | frameworkdemoiselle.persistence.default.unit.name=pu |
2 | -frameworkdemoiselle.persistence.entitymanager.scope=request | ||
3 | \ No newline at end of file | 2 | \ No newline at end of file |
3 | +frameworkdemoiselle.persistence.entitymanager.scope=REQUEST | ||
4 | \ No newline at end of file | 4 | \ No newline at end of file |
impl/extension/jpa/src/test/resources/producer/demoiselle_noscoped.properties
1 | frameworkdemoiselle.persistence.default.unit.name=pu | 1 | frameworkdemoiselle.persistence.default.unit.name=pu |
2 | -frameworkdemoiselle.persistence.entitymanager.scope=noscope | ||
3 | \ No newline at end of file | 2 | \ No newline at end of file |
3 | +frameworkdemoiselle.persistence.entitymanager.scope=NOSCOPE | ||
4 | \ No newline at end of file | 4 | \ No newline at end of file |
impl/extension/jpa/src/test/resources/producer/demoiselle_viewscoped.properties
1 | frameworkdemoiselle.persistence.default.unit.name=pu | 1 | frameworkdemoiselle.persistence.default.unit.name=pu |
2 | -frameworkdemoiselle.persistence.entitymanager.scope=view | ||
3 | \ No newline at end of file | 2 | \ No newline at end of file |
3 | +frameworkdemoiselle.persistence.entitymanager.scope=VIEW | ||
4 | \ No newline at end of file | 4 | \ No newline at end of file |