blob: 7b3d098ac6471654f7031d568847fd9b604645b0 [file] [log] [blame]
package org.codehaus.jackson.map;
import java.util.*;
import org.codehaus.jackson.map.introspect.AnnotatedClass;
import org.codehaus.jackson.map.introspect.AnnotatedConstructor;
import org.codehaus.jackson.map.introspect.AnnotatedField;
import org.codehaus.jackson.map.introspect.AnnotatedMember;
import org.codehaus.jackson.map.introspect.AnnotatedMethod;
import org.codehaus.jackson.map.introspect.VisibilityChecker;
import org.codehaus.jackson.map.type.TypeBindings;
import org.codehaus.jackson.map.util.Annotations;
import org.codehaus.jackson.type.JavaType;
/**
* Basic container for information gathered by {@link ClassIntrospector} to
* help in constructing serializers and deserializers.
* Note that the main implementation type is
* {@link org.codehaus.jackson.map.introspect.BasicBeanDescription},
* meaning that it is safe to upcast to this type.
*
* @author tatu
*/
public abstract class BeanDescription
{
/*
/**********************************************************
/* Configuration
/**********************************************************
*/
/**
* Bean type information, including raw class and possible
* * generics information
*/
protected final JavaType _type;
/*
/**********************************************************
/* Life-cycle
/**********************************************************
*/
protected BeanDescription(JavaType type)
{
_type = type;
}
/*
/**********************************************************
/* Simple accesors
/**********************************************************
*/
/**
* Method for accessing declared type of bean being introspected,
* including full generic type information (from declaration)
*/
public JavaType getType() { return _type; }
public Class<?> getBeanClass() { return _type.getRawClass(); }
public abstract AnnotatedClass getClassInfo();
public abstract boolean hasKnownClassAnnotations();
/**
* Accessor for type bindings that may be needed to fully resolve
* types of member object, such as return and argument types of
* methods and constructors, and types of fields.
*/
public abstract TypeBindings bindingsForBeanType();
/**
* Method for resolving given JDK type, using this bean as the
* generic type resolution context.
*
* @since 1.9
*/
public abstract JavaType resolveType(java.lang.reflect.Type jdkType);
/**
* Method for accessing collection of annotations the bean
* class has.
*
* @since 1.7
*/
public abstract Annotations getClassAnnotations();
/*
/**********************************************************
/* Basic API for finding properties, related
/**********************************************************
*/
/**
* @return Ordered Map with logical property name as key, and
* matching getter method as value.
*
* @since 1.9
*/
public abstract List<BeanPropertyDefinition> findProperties();
/**
* @since 1.9
*/
public abstract Map<Object, AnnotatedMember> findInjectables();
/**
* @since 1.9
*/
public abstract AnnotatedMethod findAnyGetter();
/**
* @since 1.9
*/
public abstract AnnotatedMethod findAnySetter();
/**
* @since 1.9
*/
public abstract AnnotatedMethod findJsonValueMethod();
/**
* @since 1.9
*/
public abstract AnnotatedConstructor findDefaultConstructor();
/**
* @since 1.9
*/
public abstract Set<String> getIgnoredPropertyNames();
/*
/**********************************************************
/* Deprecated methods
/**********************************************************
*/
/**
* @deprecated Since 1.9 use {@link #findProperties}
*/
@Deprecated
public abstract LinkedHashMap<String,AnnotatedMethod> findGetters(VisibilityChecker<?> visibilityChecker,
Collection<String> ignoredProperties);
/**
* @deprecated Since 1.9 use {@link #findProperties}
*/
@Deprecated
public abstract LinkedHashMap<String,AnnotatedMethod> findSetters(VisibilityChecker<?> visibilityChecker);
/**
* @deprecated Since 1.9 use {@link #findProperties}
*/
@Deprecated
public abstract LinkedHashMap<String,AnnotatedField> findDeserializableFields(VisibilityChecker<?> visibilityChecker,
Collection<String> ignoredProperties);
/**
* @deprecated Since 1.9 use the non-deprecated version
*/
@Deprecated
public abstract Map<String,AnnotatedField> findSerializableFields(VisibilityChecker<?> visibilityChecker,
Collection<String> ignoredProperties);
}