Class MediaSource

java.lang.Object
io.wcm.handler.media.spi.MediaSource
Direct Known Subclasses:
DamMediaSource, InlineMediaSource, NextGenDynamicMediaMediaSource

@ConsumerType public abstract class MediaSource extends Object
Via MediaSource OSGi services applications can define additional media sources supported by MediaHandler.

This class has to be extended by a Sling Model class. The adaptables should be SlingHttpServletRequest and Resource.

  • Constructor Details

    • MediaSource

      public MediaSource()
  • Method Details

    • getId

      @NotNull public abstract @NotNull String getId()
      Returns:
      Media source ID
    • getPrimaryMediaRefProperty

      @Nullable public abstract @Nullable String getPrimaryMediaRefProperty()
      Returns:
      Name of the property in which the primary media request is stored
    • accepts

      public boolean accepts(@NotNull @NotNull MediaRequest mediaRequest)
      Checks whether a media request can be handled by this media source
      Parameters:
      mediaRequest - Media request
      Returns:
      true if this media source can handle the given media request
    • accepts

      public abstract boolean accepts(@Nullable @Nullable String mediaRef)
      Checks whether a media request string can be handled by this media source
      Parameters:
      mediaRef - Media request string
      Returns:
      true if this media source can handle the given media request
    • resolveMedia

      @NotNull public abstract @NotNull Media resolveMedia(@NotNull @NotNull Media media)
      Resolves a media request
      Parameters:
      media - Media metadata
      Returns:
      Resolved media metadata. Never null.
    • enableMediaDrop

      public abstract void enableMediaDrop(@NotNull @NotNull io.wcm.handler.commons.dom.HtmlElement element, @NotNull @NotNull MediaRequest mediaRequest)
      Create a drop area for given HTML element to enable drag and drop of DAM assets from content finder to this element.
      Parameters:
      element - Html element
      mediaRequest - Media request to detect media args and property names
    • setCustomIPECropRatios

      public void setCustomIPECropRatios(@NotNull @NotNull io.wcm.handler.commons.dom.HtmlElement element, @NotNull @NotNull MediaRequest mediaRequest)
      Sets list of cropping ratios to a list matching the selected media formats.
      Parameters:
      element - Html element
      mediaRequest - Media request to detect media args and property names
    • getMediaRef

      @Nullable protected final @Nullable String getMediaRef(@NotNull @NotNull MediaRequest mediaRequest, @Nullable @Nullable MediaHandlerConfig mediaHandlerConfig)
      Get media request path to media library
      Parameters:
      mediaRequest - Media request
      mediaHandlerConfig - Media handler config (can be null, but should not be null)
      Returns:
      Path or null if not present
    • getMediaRefProperty

      @NotNull protected final @NotNull String getMediaRefProperty(@NotNull @NotNull MediaRequest mediaRequest, @Nullable @Nullable MediaHandlerConfig mediaHandlerConfig)
      Get property name containing the media request path
      Parameters:
      mediaRequest - Media request
      mediaHandlerConfig - Media handler config (can be null, but should not be null)
      Returns:
      Property name
    • getMediaCropDimension

      @Nullable protected final @Nullable CropDimension getMediaCropDimension(@NotNull @NotNull MediaRequest mediaRequest, @Nullable @Nullable MediaHandlerConfig mediaHandlerConfig)
      Get (optional) crop dimensions from resource
      Parameters:
      mediaRequest - Media request
      mediaHandlerConfig - Media handler config (can be null, but should not be null)
      Returns:
      Crop dimension or null if not set or invalid
    • getMediaCropProperty

      @NotNull protected final @NotNull String getMediaCropProperty(@NotNull @NotNull MediaRequest mediaRequest, @Nullable @Nullable MediaHandlerConfig mediaHandlerConfig)
      Get property name containing the cropping parameters
      Parameters:
      mediaRequest - Media request
      mediaHandlerConfig - Media handler config (can be null, but should not be null)
      Returns:
      Property name
    • getMediaRotation

      @Nullable protected final @Nullable Integer getMediaRotation(@NotNull @NotNull MediaRequest mediaRequest, @NotNull @NotNull MediaHandlerConfig mediaHandlerConfig)
      Get (optional) rotation from resource
      Parameters:
      mediaRequest - Media request
      mediaHandlerConfig - Media handler config
      Returns:
      Rotation value or null if not set or invalid
    • getMediaRotationProperty

      @NotNull protected final @NotNull String getMediaRotationProperty(@NotNull @NotNull MediaRequest mediaRequest, @NotNull @NotNull MediaHandlerConfig mediaHandlerConfig)
      Get property name containing the rotation parameter
      Parameters:
      mediaRequest - Media request
      mediaHandlerConfig - Media handler config
      Returns:
      Property name
    • getMediaMap

      @Nullable protected final @Nullable List<ImageMapArea> getMediaMap(@NotNull @NotNull MediaRequest mediaRequest, @NotNull @NotNull MediaHandlerConfig mediaHandlerConfig)
      Get (optional) image map areas from resource
      Parameters:
      mediaRequest - Media request
      mediaHandlerConfig - Media handler config
      Returns:
      Rotation value or null if not set or invalid
    • getMediaMapProperty

      @NotNull protected final @NotNull String getMediaMapProperty(@NotNull @NotNull MediaRequest mediaRequest, @NotNull @NotNull MediaHandlerConfig mediaHandlerConfig)
      Get property name containing the image map parameter
      Parameters:
      mediaRequest - Media request
      mediaHandlerConfig - Media handler config
      Returns:
      Property name
    • updateMediaArgsFromResource

      protected final void updateMediaArgsFromResource(@NotNull @NotNull MediaArgs mediaArgs, @NotNull @NotNull org.apache.sling.api.resource.Resource resource, @NotNull @NotNull MediaHandlerConfig mediaHandlerConfig)
      Updates media args settings that have default default values with values defined in the current resource that defines the media reference (e.g. alt. text settings).
      Parameters:
      mediaArgs - Media args
      resource - Resource with media reference
      mediaHandlerConfig - Media handler config
    • resolveRenditions

      protected final boolean resolveRenditions(Media media, Asset asset, MediaArgs mediaArgs)
      Resolves single rendition (or multiple renditions if any of the MediaArgs.MediaFormatOption.isMandatory() is set to true and sets the resolved rendition and the URL of the first (best-matching) rendition in the media object.
      Parameters:
      media - Media object
      asset - Asset
      mediaArgs - Media args
      Returns:
      true if all requested mandatory renditions could be resolved (at least one or all if none was set to mandatory)