/*
* JBoss, Home of Professional Open Source
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.seam.annotations;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Specifies whether or not a component should be installed if it is scanned
*
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Install
{
/**
* Precedence of all built-in Seam components
*/
public static final int BUILT_IN = 0;
/**
* Precedence to use for components of frameworks
* which extend Seam
*/
public static final int FRAMEWORK = 10;
/**
* Predence of application components (the
* default precedence)
*/
public static final int APPLICATION = 20;
/**
* Precedence to use for components which override
* application components in a particular deployment
*/
public static final int DEPLOYMENT = 30;
/**
* Precedence to use for mock objects in tests
*/
public static final int MOCK = 40;
/**
* Is this component installed by default?
*
* @return indicates if the component should be installed
*/
boolean value() default true;
/**
* Is this a debug component?
*
* @return indicates that the component should only be installed in debug mode
*/
boolean debug() default false;
/**
* Indicates that the component should not be installed unless the
* dependent components are installed
*
* @return the dependent component names
*/
String[] dependencies() default {};
/**
* Indicates that the component should not be installed unless the
* dependent components are installed
*
* @return the dependent component types
*/
Class[] genericDependencies() default {};
/**
* Indicates that the component should not be installed unless the
* the given class definitions are available on the classpath
*
* @return the dependent classes
*/
String[] classDependencies() default {};
/**
* The precedence of the component. If multiple components with
* the same name exist, the one with the higher precedence will
* be installed.
*/
public int precedence() default APPLICATION;
}