diff --git a/documentation/reference/pt-BR/configuracao.xml b/documentation/reference/pt-BR/configuracao.xml
index 0eb989b..056eef8 100644
--- a/documentation/reference/pt-BR/configuracao.xml
+++ b/documentation/reference/pt-BR/configuracao.xml
@@ -160,15 +160,15 @@ public class BookmarkConfig {
Especificando os parâmetros
- Atualmente são suportados nativamente pelo Demoiselle Framework parâmetros de cinco tipos
- diferentes, são eles: primitivo, wrapped, String,
- class, map e array, sendo que os três últimos
- são suportados a partir da versão 2.4.0. A seguir vamos explicar e exemplificar como utilizar cada um desses
+ Atualmente são suportados nativamente pelo Demoiselle Framework parâmetros de sete categorias
+ diferentes. São eles: tipos primitivos (int, float, boolean, etc), classes wrapper (Integer, Float, Boolean, etc.)
+ , String, Class, Map, Array e instâncias de Enum.
+ A seguir vamos explicar e exemplificar como utilizar cada um desses
tipos, e alertar para as possíveis exceções que poderão ser lançadas para sua aplicação.
- A partir da versão 2.4.0 não são mais reconhecidas as convenções. Os parâmetros serão procurados exatamente
+ 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
como foram definidos na classe de configuração.
@@ -332,58 +332,42 @@ untypedClass=package.MyOtherClass
Para utilizar parâmetros do tipo Map, o arquivo de configurações deve usar a seguinte
- estrutura na formação da chave: prefixo+chavedomap+nomedoatributo. Vejamos um exemplo.
+ estrutura na formação da chave: prefixo+nomedoatributo+chavedomap. Vejamos um exemplo.
Se temos em nossa aplicação uma classe de configuração como a mostrada abaixo:
url;
+ private Map connectionConfiguration;
- private Map driverClass;
-
- public Map getUrl() {
- return url;
- }
-
- public Map DriverClass() {
- return driverClass;
+ public Map getConnectionConfiguration() {
+ return connectionConfiguration;
}
}
]]>
- O arquivo de configuração deverá ser preenchido no formato seguinte (se for do tipo properties):
+ O arquivo de configuração deverá ser preenchido no seguinte formato (se for do tipo properties):
-
+
- Dessa forma, ao fazer a chamada url.get("mapkey2");por exemplo, o valor retornado será
- jdbc:mysql://localhost:3306/app.
+ Dessa forma, ao fazer a chamada connectionConfiguration.get("gateway"); por exemplo, o valor retornado será
+ 192.168.0.1.
-
-
- O ponto entre a chave do Map e o nome do parâmetro é adicionado automaticamente pelo
- framework.
-
-
+
Você pode utilizar a chave do Map com nome "default" para indicar que, no arquivo de configuração, a chave é formada
- apenas pela junção do prefixo com o atributo, sem utilizar a própria chave do Map. Por exemplo, se na sua classe
- existir um comando como este:
-
-
- o framework irá procurar no arquivo de configuração uma linha como esta:
-
+ 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
+ contiver uma chave:
+
+
+ então seu código poderá ter um comando:
+
+ e o valor de value será "Default Value".
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
-
+
+
+
+
+
+
+
+
+ Enum
+
+
+
+
+
+ É possível criar uma lista de constantes do tipo Enum e carregar um valor de constante
+ através de um arquivo de configuração. Por exemplo, caso exista o seguinte Enum
+
+
+
+
+ e ele seja usado no seguinte arquivo de configuração
+
+
+
+ O arquivo do tipo properties pode ser criado assim:
+
+
+
+
+
+ O valor definido no arquivo de configuração para atributos do tipo Enum deve
+ ser idêntico ao nome da constante definida no Enum, inclusive casando letras maiúsculas e
+ minúsculas. De fato, o valor da propriedade deve casar com o valor retornado no código:
+ Enum.name().
+
+
+
+ Caso o valor definido no arquivo de configuração não case com nenhuma constante definida no Enum,
+ uma exceção de tipo ConfigurationException de causa ConversionException
+ será lançada. Já se à propriedade for atribuido um valor vazio, o atributo do tipo Enum receberá
+ o valor null.
+
+
+
+
+
+
+
diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationEnumValueExtractor.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationEnumValueExtractor.java
index 9e99e64..b6ffcad 100644
--- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationEnumValueExtractor.java
+++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationEnumValueExtractor.java
@@ -58,7 +58,7 @@ public class ConfigurationEnumValueExtractor implements ConfigurationValueExtrac
public Object getValue(String prefix, String key, Field field, Configuration configuration) throws Exception {
String value = configuration.getString(prefix + key);
- if (value!=null){
+ if (value!=null && !value.trim().equals("")){
Object enums[] = field.getType().getEnumConstants();
for (int i=0; i