package tc.oc.pgm.module;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import tc.oc.pgm.map.MapModule;
/**
* Obsolete way to declare dependencies between modules.
*
* The modern way is to just @Inject the dependency, or an Optional of the same,
* which all modules have a binding for.
*/
@Deprecated
@Retention(RetentionPolicy.RUNTIME)
public @interface ModuleDescription {
/** Name of this module. */
String name() default "";
/**
* Try to load all of these modules before this module and throw an exception if any of them fail to load
*/
Class<? extends MapModule>[] requires() default {};
/**
* Silently skip loading this module if any of these modules fail to load
*/
Class<? extends MapModule>[] depends() default {};
/**
* Try to load all of these modules before this module but ignore if any of them fail to load
*/
Class<? extends MapModule>[] follows() default {};
}