diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/ConfigurationArrayValueExtractor.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/ConfigurationArrayValueExtractor.java
deleted file mode 100644
index 0fcea08..0000000
--- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/ConfigurationArrayValueExtractor.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Demoiselle Framework
- * Copyright (C) 2010 SERPRO
- * ----------------------------------------------------------------------------
- * This file is part of Demoiselle Framework.
- *
- * Demoiselle Framework is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License version 3
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License version 3
- * along with this program; if not, see
- * or write to the Free Software Foundation, Inc., 51 Franklin Street,
- * Fifth Floor, Boston, MA 02110-1301, USA.
- * ----------------------------------------------------------------------------
- * Este arquivo é parte do Framework Demoiselle.
- *
- * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
- * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
- * do Software Livre (FSF).
- *
- * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
- * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
- * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
- * para maiores detalhes.
- *
- * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
- * "LICENCA.txt", junto com esse programa. Se não, acesse
- * ou escreva para a Fundação do Software Livre (FSF) Inc.,
- * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
- */
-package br.gov.frameworkdemoiselle.internal.configuration;
-
-import static br.gov.frameworkdemoiselle.internal.implementation.StrategySelector.EXTENSIONS_L1_PRIORITY;
-
-import java.lang.reflect.Field;
-
-import org.apache.commons.configuration.Configuration;
-import org.apache.commons.configuration.DataConfiguration;
-
-import br.gov.frameworkdemoiselle.annotation.Priority;
-import br.gov.frameworkdemoiselle.configuration.ConfigurationValueExtractor;
-
-@Priority(EXTENSIONS_L1_PRIORITY)
-public class ConfigurationArrayValueExtractor implements ConfigurationValueExtractor {
-
- @Override
- public Object getValue(String prefix, String key, Field field, Configuration configuration, Object defaultValue) {
- return new DataConfiguration(configuration).getArray(field.getType().getComponentType(), prefix + key,
- defaultValue);
- }
-
- @Override
- public boolean isSupported(Field field) {
- return field.getType().isArray();
- }
-}
diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/ConfigurationClassValueExtractor.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/ConfigurationClassValueExtractor.java
deleted file mode 100644
index fadea85..0000000
--- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/ConfigurationClassValueExtractor.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Demoiselle Framework
- * Copyright (C) 2010 SERPRO
- * ----------------------------------------------------------------------------
- * This file is part of Demoiselle Framework.
- *
- * Demoiselle Framework is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License version 3
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License version 3
- * along with this program; if not, see
- * or write to the Free Software Foundation, Inc., 51 Franklin Street,
- * Fifth Floor, Boston, MA 02110-1301, USA.
- * ----------------------------------------------------------------------------
- * Este arquivo é parte do Framework Demoiselle.
- *
- * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
- * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
- * do Software Livre (FSF).
- *
- * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
- * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
- * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
- * para maiores detalhes.
- *
- * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
- * "LICENCA.txt", junto com esse programa. Se não, acesse
- * ou escreva para a Fundação do Software Livre (FSF) Inc.,
- * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
- */
-package br.gov.frameworkdemoiselle.internal.configuration;
-
-import static br.gov.frameworkdemoiselle.internal.implementation.StrategySelector.EXTENSIONS_L1_PRIORITY;
-
-import java.lang.reflect.Field;
-
-import org.apache.commons.configuration.Configuration;
-
-import br.gov.frameworkdemoiselle.annotation.Priority;
-import br.gov.frameworkdemoiselle.configuration.ConfigurationException;
-import br.gov.frameworkdemoiselle.configuration.ConfigurationValueExtractor;
-import br.gov.frameworkdemoiselle.util.Reflections;
-
-@Priority(EXTENSIONS_L1_PRIORITY)
-public class ConfigurationClassValueExtractor implements ConfigurationValueExtractor {
-
- @Override
- public Object getValue(String prefix, String key, Field field, Configuration configuration, Object defaultValue) {
- Object value = defaultValue;
- String canonicalName = configuration.getString(prefix + key);
-
- if (canonicalName != null) {
- ClassLoader classLoader = Reflections.getClassLoaderForClass(canonicalName);
-
- try {
- value = Class.forName(canonicalName, true, classLoader);
- } catch (ClassNotFoundException cause) {
- // TODO Lançar a mensagem correta
- throw new ConfigurationException(null, cause);
- }
- }
-
- return value;
- }
-
- @Override
- public boolean isSupported(Field field) {
- return field.getType() == Class.class;
- }
-}
diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/ConfigurationLoader.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/ConfigurationLoader.java
deleted file mode 100644
index 6391727..0000000
--- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/ConfigurationLoader.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
-/*
- * Demoiselle Framework
- * Copyright (C) 2010 SERPRO
- * ----------------------------------------------------------------------------
- * This file is part of Demoiselle Framework.
- *
- * Demoiselle Framework is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License version 3
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License version 3
- * along with this program; if not, see
- * or write to the Free Software Foundation, Inc., 51 Franklin Street,
- * Fifth Floor, Boston, MA 02110-1301, USA.
- * ----------------------------------------------------------------------------
- * Este arquivo é parte do Framework Demoiselle.
- *
- * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
- * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
- * do Software Livre (FSF).
- *
- * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
- * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
- * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
- * para maiores detalhes.
- *
- * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
- * "LICENCA.txt", junto com esse programa. Se não, acesse
- * ou escreva para a Fundação do Software Livre (FSF) Inc.,
- * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
- */
-package br.gov.frameworkdemoiselle.internal.configuration;
-
-import static br.gov.frameworkdemoiselle.configuration.ConfigType.SYSTEM;
-
-import java.io.Serializable;
-import java.lang.reflect.Field;
-import java.util.Collection;
-import java.util.HashSet;
-
-import javax.validation.constraints.NotNull;
-
-import org.apache.commons.configuration.AbstractConfiguration;
-import org.apache.commons.configuration.FileConfiguration;
-import org.apache.commons.configuration.PropertiesConfiguration;
-import org.apache.commons.configuration.SystemConfiguration;
-import org.apache.commons.configuration.XMLConfiguration;
-
-import br.gov.frameworkdemoiselle.annotation.Ignore;
-import br.gov.frameworkdemoiselle.annotation.Name;
-import br.gov.frameworkdemoiselle.configuration.ConfigType;
-import br.gov.frameworkdemoiselle.configuration.Configuration;
-import br.gov.frameworkdemoiselle.configuration.ConfigurationException;
-import br.gov.frameworkdemoiselle.configuration.ConfigurationValueExtractor;
-import br.gov.frameworkdemoiselle.internal.bootstrap.ConfigurationBootstrap;
-import br.gov.frameworkdemoiselle.internal.implementation.StrategySelector;
-import br.gov.frameworkdemoiselle.util.Beans;
-import br.gov.frameworkdemoiselle.util.Reflections;
-
-/**
- * This component loads a config class annotated with {@link Configuration} by filling its attributes with {@link Param}
- * according to a {@link ConfigType}.
- *
- * @author SERPRO
- */
-public class ConfigurationLoader implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- private Object object;
-
- private ConfigType type;
-
- private String resource;
-
- private String prefix;
-
- private org.apache.commons.configuration.Configuration configuration;
-
- private Collection fields;
-
- public void load(Object object) throws ConfigurationException {
- this.object = object;
-
- loadFields();
- validateFields();
-
- loadType();
- loadResource();
- loadConfiguration();
-
- if (this.configuration != null) {
- loadPrefix();
- loadValues();
- }
-
- validateValues();
- }
-
- private void loadFields() {
- this.fields = Reflections.getNonStaticFields(this.object.getClass());
- }
-
- private void validateFields() {
- for (Field field : this.fields) {
- validateField(field);
- }
- }
-
- private void validateField(Field field) {
- }
-
- private void loadType() {
- this.type = object.getClass().getAnnotation(Configuration.class).type();
- }
-
- private void loadResource() {
- if (this.type != SYSTEM) {
- String name = this.object.getClass().getAnnotation(Configuration.class).resource();
- String extension = this.type.toString().toLowerCase();
-
- this.resource = name + "." + extension;
- }
- }
-
- private void loadConfiguration() {
- AbstractConfiguration conf;
-
- switch (this.type) {
- case SYSTEM:
- conf = new SystemConfiguration();
- break;
-
- case XML:
- conf = new XMLConfiguration();
- break;
-
- default:
- conf = new PropertiesConfiguration();
- break;
- }
-
- conf.setDelimiterParsingDisabled(true);
-
- if (conf instanceof FileConfiguration) {
- ((FileConfiguration) conf).setURL(Reflections.getResourceAsURL(this.resource));
-
- try {
- ((FileConfiguration) conf).load();
-
- } catch (org.apache.commons.configuration.ConfigurationException cause) {
- conf = null;
- }
- }
-
- this.configuration = conf;
- }
-
- private void loadPrefix() {
- String prefix = this.object.getClass().getAnnotation(Configuration.class).prefix();
-
- if (prefix.endsWith(".")) {
- // prefix = prefix.substring(0, prefix.length() - 1);
- // TODO Lançar warning pedindo para retirar o ponto (.)?
- } else if (!prefix.isEmpty()) {
- prefix += ".";
- }
-
- this.prefix = prefix;
- }
-
- private void loadValues() {
- for (Field field : this.fields) {
- loadValue(field);
- }
- }
-
- private void loadValue(Field field) {
- if (hasIgnore(field)) {
- return;
- }
-
- Object defaultValue = Reflections.getFieldValue(field, this.object);
- Object finalValue = getValue(field, field.getType(), getKey(field), defaultValue);
-
- Reflections.setFieldValue(field, this.object, finalValue);
- }
-
- private Object getValue(Field field, Class> type, String key, Object defaultValue) {
- ConfigurationValueExtractor extractor = getValueExtractor(field);
- return extractor.getValue(this.prefix, key, field, this.configuration, defaultValue);
- }
-
- private ConfigurationValueExtractor getValueExtractor(Field field) {
- Collection candidates = new HashSet();
- ConfigurationBootstrap bootstrap = Beans.getReference(ConfigurationBootstrap.class);
-
- for (Class extends ConfigurationValueExtractor> extractorClass : bootstrap.getCache()) {
- ConfigurationValueExtractor extractor = Beans.getReference(extractorClass);
-
- if (extractor.isSupported(field)) {
- candidates.add(extractor);
- }
- }
-
- ConfigurationValueExtractor elected = StrategySelector.getInstance(ConfigurationValueExtractor.class,
- candidates);
-
- if (elected == null) {
- // TODO lançar exceção informando que nenhum extrator foi encontrado para o field e ensinar como implementar
- // um extrator personalizado.
- }
-
- return elected;
- }
-
- private String getKey(Field field) {
- String key = "";
-
- if (field.isAnnotationPresent(Name.class)) {
- key += field.getAnnotation(Name.class).value();
- } else {
- key += field.getName();
- }
-
- return key;
- }
-
- private boolean hasIgnore(Field field) {
- return field.isAnnotationPresent(Ignore.class);
- }
-
- private void validateValues() {
- for (Field field : this.fields) {
- validateValue(field);
- }
- }
-
- private void validateValue(Field field) {
- if (field.isAnnotationPresent(NotNull.class) && Reflections.getFieldValue(field, this.object) == null) {
- throw new ConfigurationException("", new NullPointerException());
- // TODO: Pegar mensagem do Bundle e verificar como as mensagens de log estão implementadas
- }
- }
-}
diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/ConfigurationMapValueExtractor.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/ConfigurationMapValueExtractor.java
deleted file mode 100644
index d88aff0..0000000
--- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/ConfigurationMapValueExtractor.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Demoiselle Framework
- * Copyright (C) 2010 SERPRO
- * ----------------------------------------------------------------------------
- * This file is part of Demoiselle Framework.
- *
- * Demoiselle Framework is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License version 3
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License version 3
- * along with this program; if not, see
- * or write to the Free Software Foundation, Inc., 51 Franklin Street,
- * Fifth Floor, Boston, MA 02110-1301, USA.
- * ----------------------------------------------------------------------------
- * Este arquivo é parte do Framework Demoiselle.
- *
- * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
- * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
- * do Software Livre (FSF).
- *
- * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
- * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
- * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
- * para maiores detalhes.
- *
- * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
- * "LICENCA.txt", junto com esse programa. Se não, acesse
- * ou escreva para a Fundação do Software Livre (FSF) Inc.,
- * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
- */
-package br.gov.frameworkdemoiselle.internal.configuration;
-
-import static br.gov.frameworkdemoiselle.internal.implementation.StrategySelector.EXTENSIONS_L1_PRIORITY;
-
-import java.lang.reflect.Field;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.commons.configuration.Configuration;
-
-import br.gov.frameworkdemoiselle.annotation.Priority;
-import br.gov.frameworkdemoiselle.configuration.ConfigurationValueExtractor;
-
-@Priority(EXTENSIONS_L1_PRIORITY)
-public class ConfigurationMapValueExtractor implements ConfigurationValueExtractor {
-
- @Override
- public Object getValue(String prefix, String key, Field field, Configuration configuration, Object defaultValue) {
- @SuppressWarnings("unchecked")
- Map value = (Map) defaultValue;
-
- String regexp = "^(" + prefix + ")((.+)\\.)?(" + key + ")$";
- Pattern pattern = Pattern.compile(regexp);
-
- for (Iterator iter = configuration.getKeys(); iter.hasNext();) {
- String iterKey = iter.next();
- Matcher matcher = pattern.matcher(iterKey);
-
- if (matcher.matches()) {
- String confKey = matcher.group(1) + (matcher.group(2) == null ? "" : matcher.group(2))
- + matcher.group(4);
-
- if (value == null) {
- value = new HashMap();
- }
-
- String mapKey = matcher.group(3) == null ? "default" : matcher.group(3);
- value.put(mapKey, configuration.getString(confKey));
- }
- }
-
- return value;
- }
-
- @Override
- public boolean isSupported(Field field) {
- return field.getType() == Map.class;
- }
-}
diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/ConfigurationPrimitiveOrWrapperValueExtractor.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/ConfigurationPrimitiveOrWrapperValueExtractor.java
deleted file mode 100644
index 6aa759c..0000000
--- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/ConfigurationPrimitiveOrWrapperValueExtractor.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Demoiselle Framework
- * Copyright (C) 2010 SERPRO
- * ----------------------------------------------------------------------------
- * This file is part of Demoiselle Framework.
- *
- * Demoiselle Framework is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License version 3
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License version 3
- * along with this program; if not, see
- * or write to the Free Software Foundation, Inc., 51 Franklin Street,
- * Fifth Floor, Boston, MA 02110-1301, USA.
- * ----------------------------------------------------------------------------
- * Este arquivo é parte do Framework Demoiselle.
- *
- * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
- * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
- * do Software Livre (FSF).
- *
- * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
- * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
- * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
- * para maiores detalhes.
- *
- * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
- * "LICENCA.txt", junto com esse programa. Se não, acesse
- * ou escreva para a Fundação do Software Livre (FSF) Inc.,
- * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
- */
-package br.gov.frameworkdemoiselle.internal.configuration;
-
-import static br.gov.frameworkdemoiselle.internal.implementation.StrategySelector.EXTENSIONS_L1_PRIORITY;
-
-import java.lang.reflect.Field;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.commons.configuration.Configuration;
-import org.apache.commons.configuration.ConversionException;
-import org.apache.commons.configuration.DataConfiguration;
-import org.apache.commons.lang.ClassUtils;
-
-import br.gov.frameworkdemoiselle.annotation.Priority;
-import br.gov.frameworkdemoiselle.configuration.ConfigurationValueExtractor;
-
-@Priority(EXTENSIONS_L1_PRIORITY)
-public class ConfigurationPrimitiveOrWrapperValueExtractor implements ConfigurationValueExtractor {
-
- private static final Set