Class AbstractProjection

java.lang.Object
org.dspace.app.rest.projection.AbstractProjection
All Implemented Interfaces:
Projection
Direct Known Subclasses:
CompositeProjection, DefaultProjection, EmbedRelsProjection, FullProjection, SpecificLevelProjection

public abstract class AbstractProjection extends Object implements Projection
Abstract base class for projections. By default, this does no transformation, and allows linking but not embedding of all subresources.
  • Constructor Details

    • AbstractProjection

      public AbstractProjection()
  • Method Details

    • transformModel

      public <T> T transformModel(T modelObject)
      Description copied from interface: Projection
      Transforms the original model object (e.g. JPA entity) before conversion to a RestModel. This is a good place to omit data for certain properties that should not be included in the object's representation as a HALResource. Omitting these properties early helps to prevent unnecessary database calls for lazy-loaded properties that are unwanted for the projection.
      Specified by:
      transformModel in interface Projection
      Type Parameters:
      T - the return type, which must be the same type as the given model object.
      Parameters:
      modelObject - the original model object, which may be of any type.
      Returns:
      the transformed model object, or the original, if the projection does not modify it.
    • transformRest

      public <T extends RestModel> T transformRest(T restObject)
      Description copied from interface: Projection
      Transforms the rest object after it was converted from a model object. This may add data to, or omit data from the rest representation of the object.
      Specified by:
      transformRest in interface Projection
      Type Parameters:
      T - the return type, which must be of the same type as the given rest object.
      Parameters:
      restObject - the rest object.
      Returns:
      the transformed rest object, or the original, if the projection does not modify it.
    • transformResource

      public <T extends HALResource> T transformResource(T halResource)
      Description copied from interface: Projection
      Transforms the resource object after it has been constructed and any constructor or annotation-based links and embeds have been added. This may add data to, or omit data from the HAL resource representation of the object.
      Specified by:
      transformResource in interface Projection
      Type Parameters:
      T - the return type, which must be of the same type as the given resource object.
      Parameters:
      halResource - the resource object.
      Returns:
      the transformed resource object, or the original, if the projection does not modify it.
    • allowEmbedding

      public boolean allowEmbedding(HALResource<? extends RestAddressableModel> halResource, LinkRest linkRest, org.springframework.hateoas.Link... oldLinks)
      Description copied from interface: Projection
      Tells whether this projection permits the embedding of a particular embeddable subresource. This gives the projection an opportunity to opt in to to certain embeds, by returning true. Note: If this method returns true for a given subresource, it will be automatically linked regardless of what Projection.allowLinking(HALResource, LinkRest) returns.
      Specified by:
      allowEmbedding in interface Projection
      Parameters:
      halResource - the resource from which the embed may or may not be made.
      linkRest - the LinkRest annotation through which the related resource was discovered on the rest object.
      oldLinks - The previously traversed links
      Returns:
      true if allowed, false otherwise.
    • allowLinking

      public boolean allowLinking(HALResource halResource, LinkRest linkRest)
      Description copied from interface: Projection
      Tells whether this projection permits the linking of a particular linkable subresource. This gives the projection an opportunity to opt in to to certain links, by returning true. Note: If Projection.allowEmbedding(HALResource, LinkRest, Link...) returns true for a given subresource, it will be automatically linked regardless of what this method returns.
      Specified by:
      allowLinking in interface Projection
      Parameters:
      halResource - the resource from which the link may or may not be made.
      linkRest - the LinkRest annotation through which the related resource was discovered on the rest object.
      Returns:
      true if allowed, false otherwise.
    • getPagingOptions

      public org.springframework.data.domain.PageRequest getPagingOptions(String rel, HALResource<? extends RestAddressableModel> resource, org.springframework.hateoas.Link... oldLinks)
      Description copied from interface: Projection
      This method will return the PageRequest object for a specific given rel
      Specified by:
      getPagingOptions in interface Projection
      Parameters:
      rel - The rel for which the PageRequest object will be made
      resource - the resource from which the embed may or may not be made.
      oldLinks - The previously traversed links
      Returns:
      The PageRequest object for the given rel