From 8e309ba046a99d676e785aa6444f15bbaa5f2a5f Mon Sep 17 00:00:00 2001 From: Cleverson Sacramento Date: Fri, 5 Apr 2013 15:40:27 -0300 Subject: [PATCH] Inclusão dos testes de personalização do carregador de configuração --- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationClassValueExtractor.java | 4 +--- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationLoader.java | 26 ++++++++++++++++++++++++++ impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/StrategySelector.java | 4 +++- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/producer/LoggerProducer.java | 25 +++++++++++++++++++++++-- impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Reflections.java | 6 ++++++ impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/ConfigurationCustomFieldTest.java | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/CustomMappedFieldConfig.java | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/CustomUnmappedFieldConfig.java | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/MappedClass.java | 41 +++++++++++++++++++++++++++++++++++++++++ impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/MyValueExtractor.java | 20 ++++++++++++++++++++ impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/UnmappedClass.java | 41 +++++++++++++++++++++++++++++++++++++++++ impl/core/src/test/resources/configuration/field/custom/demoiselle.properties | 34 ++++++++++++++++++++++++++++++++++ 12 files changed, 382 insertions(+), 6 deletions(-) create mode 100644 impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/ConfigurationCustomFieldTest.java create mode 100644 impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/CustomMappedFieldConfig.java create mode 100644 impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/CustomUnmappedFieldConfig.java create mode 100644 impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/MappedClass.java create mode 100644 impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/MyValueExtractor.java create mode 100644 impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/UnmappedClass.java create mode 100644 impl/core/src/test/resources/configuration/field/custom/demoiselle.properties 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 d036df2..a5cca3b 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 @@ -56,10 +56,8 @@ public class ConfigurationClassValueExtractor implements ConfigurationValueExtra String canonicalName = configuration.getString(prefix + key); if (canonicalName != null) { - ClassLoader classLoader = Reflections.getClassLoaderForClass(canonicalName); - try { - value = Class.forName(canonicalName, true, classLoader); + value = Reflections.forName(canonicalName); } catch (ClassNotFoundException cause) { // TODO Lançar a mensagem correta throw new ConfigurationException(null, cause); 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 b662b64..21ca878 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 @@ -51,6 +51,7 @@ 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 org.slf4j.Logger; import br.gov.frameworkdemoiselle.annotation.Ignore; import br.gov.frameworkdemoiselle.annotation.Name; @@ -60,7 +61,9 @@ import br.gov.frameworkdemoiselle.configuration.ConfigurationException; import br.gov.frameworkdemoiselle.configuration.ConfigurationValueExtractor; import br.gov.frameworkdemoiselle.internal.bootstrap.ConfigurationBootstrap; import br.gov.frameworkdemoiselle.util.Beans; +import br.gov.frameworkdemoiselle.util.NameQualifier; import br.gov.frameworkdemoiselle.util.Reflections; +import br.gov.frameworkdemoiselle.util.ResourceBundle; /** * This component loads a config class annotated with {@link Configuration} by filling its attributes with {@link Param} @@ -72,6 +75,10 @@ public class ConfigurationLoader implements Serializable { private static final long serialVersionUID = 1L; + private static ResourceBundle bundle; + + private static Logger logger; + private Object object; private ConfigType type; @@ -85,6 +92,8 @@ public class ConfigurationLoader implements Serializable { private Collection fields; public void load(Object object) throws ConfigurationException { + getLogger().debug(getBundle().getString("loading-configuration-class", object.getClass().getName())); + this.object = object; loadFields(); @@ -220,6 +229,7 @@ public class ConfigurationLoader implements Serializable { if (elected == null) { // TODO lançar exceção informando que nenhum extrator foi encontrado para o field e ensinar como implementar // um extrator personalizado. + throw new ConfigurationException(""); } return elected; @@ -253,4 +263,20 @@ public class ConfigurationLoader implements Serializable { // TODO: Pegar mensagem do Bundle e verificar como as mensagens de log estão implementadas } } + + private static ResourceBundle getBundle() { + if (bundle == null) { + bundle = Beans.getReference(ResourceBundle.class, new NameQualifier("demoiselle-core-bundle")); + } + + return bundle; + } + + private static Logger getLogger() { + if (logger == null) { + logger = Beans.getReference(Logger.class, new NameQualifier(ConfigurationLoader.class.getName())); + } + + return logger; + } } diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/StrategySelector.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/StrategySelector.java index 67b2ed8..cac33da 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/StrategySelector.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/StrategySelector.java @@ -100,7 +100,9 @@ public final class StrategySelector implements Serializable { } } - checkForAmbiguity(type, selected, options); + if (selected != null) { + checkForAmbiguity(type, selected, options); + } return selected; } diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/producer/LoggerProducer.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/producer/LoggerProducer.java index d0db0c9..a7ac177 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/producer/LoggerProducer.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/producer/LoggerProducer.java @@ -56,18 +56,21 @@ import javax.enterprise.inject.spi.InjectionPoint; import org.slf4j.Logger; +import br.gov.frameworkdemoiselle.DemoiselleException; +import br.gov.frameworkdemoiselle.annotation.Name; import br.gov.frameworkdemoiselle.internal.proxy.Slf4jLoggerProxy; +import br.gov.frameworkdemoiselle.util.Reflections; public class LoggerProducer implements Serializable { private static final long serialVersionUID = 1L; - @Produces @Default + @Produces public Logger create(final InjectionPoint ip) { Class type; - if (ip != null) { + if (ip.getMember() != null) { type = ip.getMember().getDeclaringClass(); } else { type = LoggerProducer.class; @@ -76,6 +79,24 @@ public class LoggerProducer implements Serializable { return create(type); } + @Name("") + @Produces + public Logger createNamed(final InjectionPoint ip) throws ClassNotFoundException { + Class type; + + try { + String canonicalName = ip.getAnnotated().getAnnotation(Name.class).value(); + type = Reflections.forName(canonicalName); + + } catch (ClassCastException cause) { + // TODO Colocar a mensgaem apropriada mostrando como utilizar a anotação @Name corretamente com a injeção de + // Logger. + throw new DemoiselleException(null, cause); + } + + return create(type); + } + public static Logger create(Class type) { return new Slf4jLoggerProxy(type); } diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Reflections.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Reflections.java index 3f6dcbc..aeb8533 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Reflections.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Reflections.java @@ -191,4 +191,10 @@ public final class Reflections { ClassLoader classLoader = getClassLoaderForResource(resource); return classLoader != null ? classLoader.getResource(resource) : null; } + + @SuppressWarnings("unchecked") + public static Class forName(final String className) throws ClassNotFoundException { + ClassLoader classLoader = getClassLoaderForClass(className); + return (Class) Class.forName(className, true, classLoader); + } } diff --git a/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/ConfigurationCustomFieldTest.java b/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/ConfigurationCustomFieldTest.java new file mode 100644 index 0000000..e5d206d --- /dev/null +++ b/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/ConfigurationCustomFieldTest.java @@ -0,0 +1,89 @@ +/* + * 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.configuration.field.custom; + +import static junit.framework.Assert.assertNotNull; +import static junit.framework.Assert.fail; + +import java.io.File; + +import javax.inject.Inject; + +import org.jboss.arquillian.container.test.api.Deployment; +import org.jboss.arquillian.junit.Arquillian; +import org.jboss.shrinkwrap.api.asset.FileAsset; +import org.jboss.shrinkwrap.api.spec.JavaArchive; +import org.junit.Test; +import org.junit.runner.RunWith; + +import br.gov.frameworkdemoiselle.configuration.AbstractConfigurationTest; +import br.gov.frameworkdemoiselle.configuration.ConfigurationException; + +@RunWith(Arquillian.class) +public class ConfigurationCustomFieldTest extends AbstractConfigurationTest { + + @Inject + private CustomMappedFieldConfig mappedField; + + @Inject + private CustomUnmappedFieldConfig unmappedField; + + @Deployment + public static JavaArchive createDeployment() { + JavaArchive deployment = createConfigurationDeployment(); + + deployment.addPackages(true, ConfigurationCustomFieldTest.class.getPackage()); + deployment.addAsResource(new FileAsset(new File( + "src/test/resources/configuration/field/custom/demoiselle.properties")), "demoiselle.properties"); + + return deployment; + } + + @Test + public void loadMappedClass() { + assertNotNull(mappedField.getMappedClass()); + } + + @Test + public void loadUnmappedClass() { + try { + unmappedField.getUnmappedClass(); + fail(); + } catch (ConfigurationException cause) { + } + } +} diff --git a/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/CustomMappedFieldConfig.java b/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/CustomMappedFieldConfig.java new file mode 100644 index 0000000..314b0ce --- /dev/null +++ b/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/CustomMappedFieldConfig.java @@ -0,0 +1,49 @@ +/* + * 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.configuration.field.custom; + +import br.gov.frameworkdemoiselle.configuration.Configuration; + +@Configuration +public class CustomMappedFieldConfig { + + private MappedClass mappedClass; + + public MappedClass getMappedClass() { + return mappedClass; + } +} diff --git a/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/CustomUnmappedFieldConfig.java b/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/CustomUnmappedFieldConfig.java new file mode 100644 index 0000000..02aeca2 --- /dev/null +++ b/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/CustomUnmappedFieldConfig.java @@ -0,0 +1,49 @@ +/* + * 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.configuration.field.custom; + +import br.gov.frameworkdemoiselle.configuration.Configuration; + +@Configuration +public class CustomUnmappedFieldConfig { + + private UnmappedClass unmappedClass; + + public UnmappedClass getUnmappedClass() { + return unmappedClass; + } +} diff --git a/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/MappedClass.java b/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/MappedClass.java new file mode 100644 index 0000000..9a06ed8 --- /dev/null +++ b/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/MappedClass.java @@ -0,0 +1,41 @@ +/* + * 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.configuration.field.custom; + +public class MappedClass { + +} 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 new file mode 100644 index 0000000..95fe92e --- /dev/null +++ b/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/MyValueExtractor.java @@ -0,0 +1,20 @@ +package br.gov.frameworkdemoiselle.configuration.field.custom; + +import java.lang.reflect.Field; + +import org.apache.commons.configuration.Configuration; + +import br.gov.frameworkdemoiselle.configuration.ConfigurationValueExtractor; + +public class MyValueExtractor implements ConfigurationValueExtractor { + + @Override + public Object getValue(String prefix, String key, Field field, Configuration configuration, Object defaultValue) { + return new MappedClass(); + } + + @Override + public boolean isSupported(Field field) { + return field.getType() == MappedClass.class; + } +} diff --git a/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/UnmappedClass.java b/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/UnmappedClass.java new file mode 100644 index 0000000..56470f2 --- /dev/null +++ b/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/UnmappedClass.java @@ -0,0 +1,41 @@ +/* + * 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.configuration.field.custom; + +public class UnmappedClass { + +} diff --git a/impl/core/src/test/resources/configuration/field/custom/demoiselle.properties b/impl/core/src/test/resources/configuration/field/custom/demoiselle.properties new file mode 100644 index 0000000..3f1fa2e --- /dev/null +++ b/impl/core/src/test/resources/configuration/field/custom/demoiselle.properties @@ -0,0 +1,34 @@ +# 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. -- libgit2 0.21.2