Class AbstractObjectProvider<T>
- java.lang.Object
-
- org.glassfish.jersey.message.filtering.spi.AbstractObjectProvider<T>
-
- Type Parameters:
T- representation of entity data filtering requested by provider.
- All Implemented Interfaces:
ObjectGraphTransformer<T>,ObjectProvider<T>
- Direct Known Subclasses:
JacksonObjectProvider,ObjectGraphProvider
public abstract class AbstractObjectProvider<T> extends java.lang.Object implements ObjectProvider<T>, ObjectGraphTransformer<T>
Common implementation ofobject providerandobject graph transformer.Extensions of this class must provide a type of entity-filtering object (via generic type parameter) the requesting provider (e.g. message body worker) is familiar with and an implementation of
ObjectGraphTransformer.transform(ObjectGraph)method for this type.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classAbstractObjectProvider.EntityContextClass to be used as a key in cache (EntityContext-> filtering object) when processing similar requests.
-
Field Summary
Fields Modifier and Type Field Description private EntityInspectorentityInspectorprivate com.google.common.cache.Cache<AbstractObjectProvider.EntityContext,T>filteringObjectsprivate EntityGraphProvidergraphProviderprivate static intPROVIDER_CACHE_SIZEprivate ScopeProviderscopeProvider
-
Constructor Summary
Constructors Constructor Description AbstractObjectProvider()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private TcreateFilteringObject(java.lang.Class<?> entityClass, java.util.Set<java.lang.String> filteringScopes, boolean forWriter)Create entity-filtering object after this object has not been found in the cache.private java.lang.annotation.Annotation[]getEntityAnnotations(java.lang.annotation.Annotation[] annotations)Get entity annotations passed to request/response.private TgetFilteringObject(java.lang.Class<?> entityClass, boolean forWriter, java.lang.annotation.Annotation... annotations)TgetFilteringObject(java.lang.reflect.Type genericType, boolean forWriter, java.lang.annotation.Annotation... annotations)Get reader/writer entity-filtering object for given type.protected java.util.Set<java.lang.String>immutableSetOf(java.util.Set<java.lang.String> set, java.lang.String item)A helper method for a creation of an immutable set based on a provided set together with a given item.protected java.lang.StringsubgraphIdentifier(java.lang.Class<?> parent, java.lang.String field, java.lang.Class<?> fieldClass)Creates a string identifier of a sub-graph.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.glassfish.jersey.message.filtering.spi.ObjectGraphTransformer
transform
-
-
-
-
Field Detail
-
PROVIDER_CACHE_SIZE
private static final int PROVIDER_CACHE_SIZE
- See Also:
- Constant Field Values
-
filteringObjects
private final com.google.common.cache.Cache<AbstractObjectProvider.EntityContext,T> filteringObjects
-
scopeProvider
@Inject private ScopeProvider scopeProvider
-
entityInspector
@Inject private EntityInspector entityInspector
-
graphProvider
@Inject private EntityGraphProvider graphProvider
-
-
Method Detail
-
getFilteringObject
public final T getFilteringObject(java.lang.reflect.Type genericType, boolean forWriter, java.lang.annotation.Annotation... annotations)
Description copied from interface:ObjectProviderGet reader/writer entity-filtering object for given type.- Specified by:
getFilteringObjectin interfaceObjectProvider<T>- Parameters:
genericType- type for which the object is requested.forWriter- flag to determine whether to create object for reading/writing purposes.annotations- entity annotations to determine the runtime scope.- Returns:
- entity-filtering object.
-
getFilteringObject
private T getFilteringObject(java.lang.Class<?> entityClass, boolean forWriter, java.lang.annotation.Annotation... annotations)
-
getEntityAnnotations
private java.lang.annotation.Annotation[] getEntityAnnotations(java.lang.annotation.Annotation[] annotations)
Get entity annotations passed to request/response. This method filters annotations that are proxy instances (proxy annotations are taken from resource method and passed in this list).- Parameters:
annotations- annotations obtained from provider.- Returns:
- annoations passed to request/response.
-
createFilteringObject
private T createFilteringObject(java.lang.Class<?> entityClass, java.util.Set<java.lang.String> filteringScopes, boolean forWriter)
Create entity-filtering object after this object has not been found in the cache.- Parameters:
entityClass- entity class the entity-filtering object should be created for.filteringScopes- entity-filtering scopes to create the entity-filtering object for.forWriter- flag determining whether the class should be examined for reader or writer.- Returns:
- entity-filtering object.
-
immutableSetOf
protected java.util.Set<java.lang.String> immutableSetOf(java.util.Set<java.lang.String> set, java.lang.String item)A helper method for a creation of an immutable set based on a provided set together with a given item.- Parameters:
set- The set to create the immutable set from.item- The item to add to the set before it's made immutable.- Returns:
- The immutable set from given set and item.
-
subgraphIdentifier
protected java.lang.String subgraphIdentifier(java.lang.Class<?> parent, java.lang.String field, java.lang.Class<?> fieldClass)Creates a string identifier of a sub-graph.- Parameters:
parent- The parent class.field- The field name.fieldClass- The class of the field.- Returns:
- The string identifier of the sub-graph.
-
-