Interface ObjectProvider<T>
-
- Type Parameters:
T
- representation of entity data filtering requested by provider.
- All Known Implementing Classes:
AbstractObjectProvider
,JacksonObjectProvider
,ObjectGraphProvider
@Contract public interface ObjectProvider<T>
Entry point of Entity Data Filtering feature for providers working with custom entities and media types (reading/writing). Exposed methods are supposed to provide an entity-filtering object of defined type (generic parameter type<T>
) for given types/classes that is requested by underlying provider (e.g. message body worker).Methods are also accepting a list of entity annotations which entity-filtering scopes and then particular entity-filtering object are determined from. Entity annotations can be passed to the runtime via:
Entity.entity(Object, javax.ws.rs.core.MediaType, java.lang.annotation.Annotation[])
on the client, orResponse.ResponseBuilder.entity(Object, java.lang.annotation.Annotation[])
on the server
Custom implementations should, during processing, look up for available
entity processors
to examine given entity classes andscope providers
to determine the current entity-filtering scope. Entity class and entity-filtering scopes determine theobject graph
passed toobject graph transformer
and hence the resulting entity-filtering object.Implementations should be registered into client/server runtime via
jersey binder
(for more information and common implementation seeAbstractObjectProvider
):bindAsContract(MyObjectProvider.class) // FilteringGraphTransformer. .to(new TypeLiteral<ObjectGraphTransformer<MyFilteringObject>>() {}) // Scope. .in(Singleton.class);
The custom provider can be theninjected
as one these injection point types:MyObjectProvider
javax.inject.Provider<ObjectProvider<MyFilteringObject>>
By default a
ObjectGraph
provider is available in the runtime. This object provider can be injected (via@Inject
) into the following types:ObjectProvider
javax.inject.Provider<ObjectProvider<Object>>
javax.inject.Provider<ObjectProvider<ObjectGraph>>
Note: For most of the cases it is sufficient that users implement
object graph transformer
by extendingAbstractObjectProvider
class.- See Also:
AbstractObjectProvider
,ObjectGraphTransformer
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description T
getFilteringObject(java.lang.reflect.Type genericType, boolean forWriter, java.lang.annotation.Annotation... annotations)
Get reader/writer entity-filtering object for given type.
-
-
-
Method Detail
-
getFilteringObject
T getFilteringObject(java.lang.reflect.Type genericType, boolean forWriter, java.lang.annotation.Annotation... annotations)
Get reader/writer entity-filtering object for given type.- 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.
-
-