package tc.oc.commons.core.inject;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import javax.inject.Qualifier;
import com.google.inject.BindingAnnotation;
/**
* Denotes a binding to a dynamic proxy that delegates to the
* Provider of the same type. The provider's get() method is
* called for every method call on the proxied interface.
*
* This allows you to use a scoped or otherwise dynamic
* object as if it was constant.
*
* Install a {@link ProxiedManifest} or call {@link Binders#bindProxy}
* to make the proxy available for a given type.
*
* TODO: Some way to proxy annotated bindings
*/
@Qualifier
@BindingAnnotation
@Retention(RetentionPolicy.RUNTIME)
public @interface Proxied {}