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 Object implements ObjectProvider<T>, ObjectGraphTransformer<T>
Common implementation of object provider and object 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.

  • Field Details

  • Constructor Details

    • AbstractObjectProvider

      public AbstractObjectProvider()
  • Method Details

    • getFilteringObject

      public final T getFilteringObject(Type genericType, boolean forWriter, Annotation... annotations)
      Description copied from interface: ObjectProvider
      Get reader/writer entity-filtering object for given type.
      Specified by:
      getFilteringObject in interface ObjectProvider<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(Class<?> entityClass, boolean forWriter, Annotation... annotations)
    • getEntityAnnotations

      private Annotation[] getEntityAnnotations(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(Class<?> entityClass, Set<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 Set<String> immutableSetOf(Set<String> set, 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 String subgraphIdentifier(Class<?> parent, String field, 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.