package ru.vyarus.guice.ext.core.field;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
/**
* Annotated filed post processor.
*
* @author Vyacheslav Rusakov
* @since 30.06.2014
* @param <T> annotation type
*/
public interface FieldPostProcessor<T extends Annotation> {
/**
* Called to post process annotated bean filed.
* It is safe to avoid explicit exception handling (except special cases required by processor logic).
*
* @param annotation annotation instance
* @param field annotated field
* @param instance bean instance
* @throws Exception on any unrecoverable error
* @see ru.vyarus.guice.ext.core.field.AnnotatedFieldTypeListener
*/
void process(T annotation, Field field, Object instance) throws Exception;
}