001package de.cuioss.test.jsf.config;
002
003import static java.lang.annotation.ElementType.TYPE;
004import static java.lang.annotation.RetentionPolicy.RUNTIME;
005
006import java.lang.annotation.Repeatable;
007import java.lang.annotation.Retention;
008import java.lang.annotation.Target;
009
010/**
011 * This annotations can be used to configure certain aspects of the
012 * configuration of the jsf-runtime for unit-testing. For simple cases the
013 * test-class can implement the corresponding interfaces itself:
014 * {@link ApplicationConfigurator}, {@link ComponentConfigurator},
015 * {@link RequestConfigurator} or {@link BeanConfigurator}. The base-class will
016 * ensure that the corresponding methods will be called at setup-time. This is
017 * useful for cases, where there is no need to reuse a certain configuration.
018 *
019 * @author Oliver Wolff
020 */
021@Retention(RUNTIME)
022@Target(TYPE)
023@Repeatable(JsfTestConfigurations.class)
024public @interface JsfTestConfiguration {
025
026    /**
027     * @return one or more concrete instances of {@link JsfTestContextConfigurator}
028     */
029    Class<? extends JsfTestContextConfigurator>[] value();
030
031}