/*
* 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 <http://www.gnu.org/licenses/>
* 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 verso 3 como publicada pela Fundao
* do Software Livre (FSF).
*
* Este programa distribudo na esperana que possa ser til, mas SEM NENHUMA
* GARANTIA; sem uma garantia implcita de ADEQUAO a qualquer MERCADO ou
* APLICAO EM PARTICULAR. Veja a Licena Pblica Geral GNU/LGPL em portugus
* para maiores detalhes.
*
* Voc deve ter recebido uma cpia da GNU LGPL verso 3, sob o ttulo
* "LICENCA.txt", junto com esse programa. Se no, acesse <http://www.gnu.org/licenses/>
* ou escreva para a Fundao do Software Livre (FSF) Inc.,
* 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
*/
package br.gov.frameworkdemoiselle.configuration;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import javax.inject.Named;
import javax.inject.Singleton;
/**
* Identifies a <b>configuration class</b>, that is, a structure reserved to store configuration values retrieved from a
* given resource file or system variables.
* <p>
* This class is gonna have a single instance throughout the application, as stated by the <b>singleton</b> design
* pattern approach.
* <p>
* A <i>Configuration</i> is:
* <ul>
* <li>defined when annotated with {@code @Configuration}</li>
* <li>automatically injected whenever {@code @Inject} is used</li>
* </ul>
*
* @author SERPRO
*/
@Named
@Singleton
@Inherited
@Target(TYPE)
@Retention(RUNTIME)
public @interface Configuration {
public static final String DEFAULT_RESOURCE = "demoiselle";
/**
* Defines the resource file name to be read by this configuration class. There is no need to specify
* file extension in the case of properties or XML resources.
* <p>
* For instance, when resource is set to <code>"bookmark"</code> and the type set to properties,
* a corresponding file named <code>bookmark.properties</code> is considered.
* <p>
* If not specified, the default configuration file <code>demoiselle.properties</code> is rather considered.
*
* @return String
*/
String resource() default DEFAULT_RESOURCE;
}
|