package ru.vyarus.guice.ext.core.generator;
import java.lang.annotation.Annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
/**
* Guice doesn't allow scope annotations on abstract types
* ({@code com.google.inject.internal.Annotations#checkForMisplacedScopeAnnotations()}), so you can't use it directly.
* <p>This annotation wraps actual scope annotation which will be set to generated class.</p>
* <p>And yes, it's named as guice marker annotation, but name is perfect and you'll never need to use both in one
* class.</p>
*
* @author Vyacheslav Rusakov
* @since 10.12.2014
*/
@Target(TYPE)
@Retention(RUNTIME)
public @interface ScopeAnnotation {
/**
* @return scope annotation
*/
Class<? extends Annotation> value();
}