From 5c870b04b7348486094255e1af9924a03698edbd Mon Sep 17 00:00:00 2001 From: Cleverson Sacramento Date: Wed, 10 Apr 2013 14:33:01 -0300 Subject: [PATCH] Ajustes nos extratores --- impl/core/src/main/java/br/gov/frameworkdemoiselle/configuration/ConfigurationValueExtractor.java | 2 +- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationArrayValueExtractor.java | 2 +- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationClassValueExtractor.java | 13 ++++--------- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationLoader.java | 17 +++++++++++++++-- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationMapValueExtractor.java | 2 +- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationPrimitiveOrWrapperValueExtractor.java | 22 ++++++++++++++-------- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationStringValueExtractor.java | 7 ++++--- impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/MyValueExtractor.java | 2 +- impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/primitiveorwrapper/ConfigurationPrimitiveOrWrapperFieldTest.java | 32 ++++++++++++++------------------ 9 files changed, 55 insertions(+), 44 deletions(-) diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/configuration/ConfigurationValueExtractor.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/configuration/ConfigurationValueExtractor.java index 9f4f1a6..bb6ad6a 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/configuration/ConfigurationValueExtractor.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/configuration/ConfigurationValueExtractor.java @@ -42,7 +42,7 @@ import org.apache.commons.configuration.Configuration; public interface ConfigurationValueExtractor { - Object getValue(String prefix, String key, Field field, Configuration configuration); + Object getValue(String prefix, String key, Field field, Configuration configuration) throws Exception; boolean isSupported(Field field); } diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationArrayValueExtractor.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationArrayValueExtractor.java index 2480374..d62bbcd 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationArrayValueExtractor.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationArrayValueExtractor.java @@ -50,7 +50,7 @@ import br.gov.frameworkdemoiselle.configuration.ConfigurationValueExtractor; public class ConfigurationArrayValueExtractor implements ConfigurationValueExtractor { @Override - public Object getValue(String prefix, String key, Field field, Configuration configuration) { + public Object getValue(String prefix, String key, Field field, Configuration configuration) throws Exception { return new DataConfiguration(configuration).getArray(field.getType().getComponentType(), prefix + key); } diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationClassValueExtractor.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationClassValueExtractor.java index 8b41b25..c209e73 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationClassValueExtractor.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationClassValueExtractor.java @@ -43,25 +43,20 @@ 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; +import br.gov.frameworkdemoiselle.util.Strings; @Priority(EXTENSIONS_L1_PRIORITY) public class ConfigurationClassValueExtractor implements ConfigurationValueExtractor { @Override - public Object getValue(String prefix, String key, Field field, Configuration configuration) { + public Object getValue(String prefix, String key, Field field, Configuration configuration) throws Exception { Object value = null; String canonicalName = configuration.getString(prefix + key); - if (!canonicalName.equals("")) { - try { - value = Reflections.forName(canonicalName); - } catch (ClassNotFoundException cause) { - // TODO Lançar a mensagem correta - throw new ConfigurationException("", cause); - } + if (!Strings.isEmpty(canonicalName)) { + value = Reflections.forName(canonicalName); } return value; diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationLoader.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationLoader.java index 308267d..9c7669d 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationLoader.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationLoader.java @@ -226,8 +226,21 @@ public class ConfigurationLoader implements Serializable { } private Object getValue(Field field, Class type, String key, Object defaultValue) { - ConfigurationValueExtractor extractor = getValueExtractor(field); - return extractor.getValue(this.prefix, key, field, this.configuration); + Object value = null; + + try { + ConfigurationValueExtractor extractor = getValueExtractor(field); + value = extractor.getValue(this.prefix, key, field, this.configuration); + + } catch (ConfigurationException cause) { + throw cause; + + } catch (Exception cause) { + // TODO Lançar mensagem informando que houve erro ao tentar extrair o valor com o extrator tal. + throw new ConfigurationException("", cause); + } + + return value; } private ConfigurationValueExtractor getValueExtractor(Field field) { diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationMapValueExtractor.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationMapValueExtractor.java index c6b2f6e..08bc2a1 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationMapValueExtractor.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationMapValueExtractor.java @@ -54,7 +54,7 @@ import br.gov.frameworkdemoiselle.configuration.ConfigurationValueExtractor; public class ConfigurationMapValueExtractor implements ConfigurationValueExtractor { @Override - public Object getValue(String prefix, String key, Field field, Configuration configuration) { + public Object getValue(String prefix, String key, Field field, Configuration configuration) throws Exception { Map value = null; String regexp = "^(" + prefix + ")((.+)\\.)?(" + key + ")$"; diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationPrimitiveOrWrapperValueExtractor.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationPrimitiveOrWrapperValueExtractor.java index 1ce9165..bad97d6 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationPrimitiveOrWrapperValueExtractor.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationPrimitiveOrWrapperValueExtractor.java @@ -43,13 +43,13 @@ import java.util.HashSet; import java.util.Set; import org.apache.commons.configuration.Configuration; -import org.apache.commons.configuration.ConfigurationException; 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; +import br.gov.frameworkdemoiselle.util.Strings; @Priority(EXTENSIONS_L1_PRIORITY) public class ConfigurationPrimitiveOrWrapperValueExtractor implements ConfigurationValueExtractor { @@ -70,21 +70,27 @@ public class ConfigurationPrimitiveOrWrapperValueExtractor implements Configurat @Override @SuppressWarnings("unchecked") - public Object getValue(String prefix, String key, Field field, Configuration configuration) { + public Object getValue(String prefix, String key, Field field, Configuration configuration) throws Exception { Object value; + try { value = new DataConfiguration(configuration).get(ClassUtils.primitiveToWrapper(field.getType()), prefix + key); - } catch (ConversionException e) { - value = new DataConfiguration(configuration).get(ClassUtils.primitiveToWrapper(String.class), prefix + key); - if (value.equals("")) { - value = null; - } else - throw e; + + } catch (ConversionException cause) { + validate(prefix, key, configuration, cause); + value = null; } + return value; } + private void validate(String prefix, String key, Configuration configuration, ConversionException cause) { + if (!Strings.isEmpty(configuration.getString(prefix + key))) { + throw cause; + } + } + @Override public boolean isSupported(Field field) { return field.getType().isPrimitive() || wrappers.contains(field.getType()); diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationStringValueExtractor.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationStringValueExtractor.java index de21447..0a9362d 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationStringValueExtractor.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationStringValueExtractor.java @@ -44,15 +44,16 @@ import org.apache.commons.configuration.Configuration; import br.gov.frameworkdemoiselle.annotation.Priority; import br.gov.frameworkdemoiselle.configuration.ConfigurationValueExtractor; +import br.gov.frameworkdemoiselle.util.Strings; @Priority(EXTENSIONS_L1_PRIORITY) public class ConfigurationStringValueExtractor implements ConfigurationValueExtractor { @Override - public Object getValue(String prefix, String key, Field field, Configuration configuration) { - Object value = configuration.getString(prefix + key); + public Object getValue(String prefix, String key, Field field, Configuration configuration) throws Exception { + String value = configuration.getString(prefix + key); - if ((value !=null) && (value.equals(""))) { + if (Strings.isEmpty(value)) { value = null; } diff --git a/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/MyValueExtractor.java b/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/MyValueExtractor.java index eec8d13..ac120b6 100644 --- a/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/MyValueExtractor.java +++ b/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/MyValueExtractor.java @@ -9,7 +9,7 @@ import br.gov.frameworkdemoiselle.configuration.ConfigurationValueExtractor; public class MyValueExtractor implements ConfigurationValueExtractor { @Override - public Object getValue(String prefix, String key, Field field, Configuration configuration) { + public Object getValue(String prefix, String key, Field field, Configuration configuration) throws Exception { return new MappedClass(); } diff --git a/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/primitiveorwrapper/ConfigurationPrimitiveOrWrapperFieldTest.java b/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/primitiveorwrapper/ConfigurationPrimitiveOrWrapperFieldTest.java index f9ff71d..c3a4657 100644 --- a/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/primitiveorwrapper/ConfigurationPrimitiveOrWrapperFieldTest.java +++ b/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/primitiveorwrapper/ConfigurationPrimitiveOrWrapperFieldTest.java @@ -43,8 +43,6 @@ import java.io.File; import javax.inject.Inject; -import junit.framework.Assert; - import org.apache.commons.configuration.ConversionException; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; @@ -52,7 +50,6 @@ import org.jboss.shrinkwrap.api.asset.FileAsset; import org.jboss.shrinkwrap.api.spec.JavaArchive; import org.junit.BeforeClass; import org.junit.Test; -import org.junit.internal.runners.statements.Fail; import org.junit.runner.RunWith; import br.gov.frameworkdemoiselle.configuration.AbstractConfigurationTest; @@ -69,7 +66,7 @@ public class ConfigurationPrimitiveOrWrapperFieldTest extends AbstractConfigurat @Inject private SystemPrimitiveOrWrapperFieldConfig systemConfig; - + @Inject private PropertiesPrimitiveOrWrapperErrorFieldConfig propertiesErrorConfig; @@ -77,7 +74,7 @@ public class ConfigurationPrimitiveOrWrapperFieldTest extends AbstractConfigurat private XMLPrimitiveOrWrapperErrorFieldConfig xmlErrorConfig; @Inject - private SystemPrimitiveOrWrapperErrorFieldConfig systemErrorConfig; + private SystemPrimitiveOrWrapperErrorFieldConfig systemErrorConfig; @Deployment public static JavaArchive createDeployment() { @@ -147,24 +144,23 @@ public class ConfigurationPrimitiveOrWrapperFieldTest extends AbstractConfigurat try { assertEquals(expected, propertiesErrorConfig.getErrorPrimitiveInteger()); fail(); - } catch (ConversionException cause) { - Assert.assertEquals(ConversionException.class, cause.getCause().getClass()); + } catch (ConfigurationException cause) { + assertEquals(ConversionException.class, cause.getCause().getClass()); } try { assertEquals(expected, propertiesErrorConfig.getErrorPrimitiveInteger()); fail(); - } catch (ConversionException cause) { - Assert.assertEquals(ConversionException.class, cause.getCause().getClass()); + } catch (ConfigurationException cause) { + assertEquals(ConversionException.class, cause.getCause().getClass()); } try { assertEquals(expected, xmlErrorConfig.getErrorPrimitiveInteger()); fail(); - } catch (ConversionException cause) { - Assert.assertEquals(ConversionException.class, cause.getCause().getClass()); + } catch (ConfigurationException cause) { + assertEquals(ConversionException.class, cause.getCause().getClass()); } - } @Test @@ -174,22 +170,22 @@ public class ConfigurationPrimitiveOrWrapperFieldTest extends AbstractConfigurat try { assertEquals(expected, propertiesErrorConfig.getErrorWrappedInteger()); fail(); - } catch (ConversionException cause) { - Assert.assertEquals(ConversionException.class, cause.getCause().getClass()); + } catch (ConfigurationException cause) { + assertEquals(ConversionException.class, cause.getCause().getClass()); } try { assertEquals(expected, propertiesErrorConfig.getErrorWrappedInteger()); fail(); - } catch (ConversionException cause) { - Assert.assertEquals(ConversionException.class, cause.getCause().getClass()); + } catch (ConfigurationException cause) { + assertEquals(ConversionException.class, cause.getCause().getClass()); } try { assertEquals(expected, xmlErrorConfig.getErrorWrappedInteger()); fail(); - } catch (ConversionException cause) { - Assert.assertEquals(ConversionException.class, cause.getCause().getClass()); + } catch (ConfigurationException cause) { + assertEquals(ConversionException.class, cause.getCause().getClass()); } } } -- libgit2 0.21.2