org.codehaus.jackson.map.introspect.AnnotatedField Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ehcache Show documentation
Show all versions of ehcache Show documentation
Ehcache is an open source, standards-based cache used to boost performance,
offload the database and simplify scalability. Ehcache is robust, proven and full-featured and
this has made it the most widely-used Java-based cache.
package org.codehaus.jackson.map.introspect;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.lang.reflect.Member;
import java.lang.reflect.Type;
/**
* Object that represents non-static (and usually non-transient/volatile)
* fields of a class.
*
* @author tatu
*/
public final class AnnotatedField
extends AnnotatedMember
{
protected final Field _field;
/*
/**********************************************************
/* Life-cycle
/**********************************************************
*/
public AnnotatedField(Field field, AnnotationMap annMap)
{
super(annMap);
_field = field;
}
@Override
public AnnotatedField withAnnotations(AnnotationMap ann) {
return new AnnotatedField(_field, ann);
}
/**
* Method called to override an annotation, usually due to a mix-in
* annotation masking or overriding an annotation 'real' constructor
* has.
*/
public void addOrOverride(Annotation a)
{
_annotations.add(a);
}
/*
/**********************************************************
/* Annotated impl
/**********************************************************
*/
@Override
public Field getAnnotated() { return _field; }
@Override
public int getModifiers() { return _field.getModifiers(); }
@Override
public String getName() { return _field.getName(); }
@Override
public A getAnnotation(Class acls)
{
return _annotations.get(acls);
}
@Override
public Type getGenericType() {
return _field.getGenericType();
}
@Override
public Class> getRawType() {
return _field.getType();
}
/*
/**********************************************************
/* AnnotatedMember impl
/**********************************************************
*/
@Override
public Class> getDeclaringClass() { return _field.getDeclaringClass(); }
@Override
public Member getMember() { return _field; }
@Override
public void setValue(Object pojo, Object value)
throws IllegalArgumentException
{
try {
_field.set(pojo, value);
} catch (IllegalAccessException e) {
throw new IllegalArgumentException("Failed to setValue() for field "
+getFullName()+": "+e.getMessage(), e);
}
}
/*
/**********************************************************
/* Extended API, generic
/**********************************************************
*/
public String getFullName() {
return getDeclaringClass().getName() + "#" + getName();
}
public int getAnnotationCount() { return _annotations.size(); }
@Override
public String toString()
{
return "[field "+getName()+", annotations: "+_annotations+"]";
}
}