Class AbstractAssetHandler

java.lang.Object
com.day.cq.dam.commons.handler.AbstractAssetHandler
All Implemented Interfaces:
AssetHandler
Direct Known Subclasses:
StandardImageHandler

public abstract class AbstractAssetHandler extends Object implements AssetHandler
The AbstractAssetHandler serves as basis for all other asset handler implementations and provides common used functionality.
  • Field Details

    • PROPERTY_DEACTIVATED_MIME_TYPES

      public static String PROPERTY_DEACTIVATED_MIME_TYPES
      The property for deactivated mime types.
  • Constructor Details

    • AbstractAssetHandler

      public AbstractAssetHandler()
  • Method Details

    • createThumbnails

      public void createThumbnails(Asset asset, Collection<ThumbnailConfig> configs) throws IOException
      Thumbnails of an asset are created during import/update of an asset and it's original binary. Currently this method is used by the CreateThumbnailProcess and the CommandLineProcess as part of the DAM Update Asset workflow. Implementations may choose to create asset thumbnails for every entry in the thumbnailConfigs list argument, to not create any thumbnails at all, or to create a generic thumbnail independent of the given config. Thumbnails themselves are renditions of an asset and must be persisted as such (see Asset.addRendition(String, java.io.InputStream, String)).

      The thumbnail renditions are created depending on the given configuration list:

       {
           height:h1,
           width: w1,
           doCenter: true (or false)
       },
       {
       ...
       }
       
      Sample:
         ...
         final ArrayList<Map<String, Object>> config = new ArrayList<Map<String, Object>>();
      
         config.add(new HashMap<String, Object>() {{
             put("width", 140);
             put("height", 100);
             put("doCenter", true);
         }});
         config.add(new HashMap<String, Object>() {{
             put("width", 80);
             put("height", 80);
             put("doCenter", true);
         }});
      
        handler.createThumbnailsExt(
                 getTiff(),
                 asset.adaptTo(Node.class).getNode("jcr:content/renditions"),
                 session,
                 config);
        ...
       
      Specified by:
      createThumbnails in interface AssetHandler
      Parameters:
      asset - the asset/file for which the thumbnails are generated
      configs - thumbnail configurations
      Throws:
      IOException - is thrown in case while an error occurred while fetching the image
      See Also:
    • createThumbnails

      public void createThumbnails(Asset asset) throws IOException
      Creates thumbnails for this asset. Which thumbnails are created is automatically derived from the existing thumbnails (renditions with the cq5dam.thumbnail prefix). This essentially amounts to re-creating existing thumbnails.
      Specified by:
      createThumbnails in interface AssetHandler
      Parameters:
      asset - The asset for which to create thumbnails.
      Throws:
      IOException - If an error occurred while extracting the image.
    • createThumbnails

      public void createThumbnails(Asset asset, Rendition rendition, Collection<ThumbnailConfig> configs) throws IOException
      Creates thumbnails for an Assets particular Rendition.
      Specified by:
      createThumbnails in interface AssetHandler
      Parameters:
      asset - The asset for which to created thumbnails.
      rendition - The rendition serving as the thumbnail basis.
      configs - The thumbnail configurations.
      Throws:
      IOException - If an error occurred extracting an image from the rendition.
    • canHandleSubAssets

      public boolean canHandleSubAssets()
      Indicates if the handler supports processing of sub assets
      Specified by:
      canHandleSubAssets in interface AssetHandler
      Returns:
      true if handler is able to process sub assets
    • processSubAssets

      public List<String> processSubAssets(Asset asset)
      Description copied from interface: AssetHandler
      Handler implementations may choose to support sub asset creation for the file types it handles. The method is called by the CreateSubAssetsProcess during import/update of an asset and its binary, as part of the DAM Update Asset workflow. Sub assets represent fragments of the original asset, for example every page of a multi-page PDF document are sub assets. Sub assets are stored as assets themselves under the parent asset. Sub assets are stored in the subassets folder of the main asset, e.g. at /content/dam/geometrixx/documents/ECM Artikel.pdf/subassets.

      The asset argument represents the Node of type nt:file holding the binary content or the DAM Asset node (type dam:Asset), for which its original rendition would be retrieved.

      Specified by:
      processSubAssets in interface AssetHandler
      Parameters:
      asset - asset to extract sub assets
      Returns:
      List constaining all paths to the newly created assets
      See Also:
    • processRelated

      public Iterator<? extends AssetRelation> processRelated(Asset asset)
      Description copied from interface: AssetHandler
      extracts and stores the links to the assets related with provided asset.
      Specified by:
      processRelated in interface AssetHandler
      Parameters:
      asset - asset to process
      Returns:
      Iterator of AssetRelation or an empty iterator if no related assets are available
    • getImage

      public BufferedImage getImage(Rendition rendition) throws IOException
      Description copied from interface: AssetHandler
      This method retrieves the graphical representation of an Assets given Rendition. For images the BufferedImage of the original image is returned, for other formats the first page is retrieved as BufferedImage
      Specified by:
      getImage in interface AssetHandler
      Parameters:
      rendition - The rendition for which to retrieve its graphical representation.
      Returns:
      BufferedImage if a graphical representation exists, otherwise null
      Throws:
      IOException - in case an error is thrown while fetching the buffered image
    • getImage

      public BufferedImage getImage(Rendition rendition, Dimension maxDimension) throws IOException
      Description copied from interface: AssetHandler
      This method retrieves the graphical representation of an Assets given Rendition. For images the BufferedImage of the original image is returned, for other formats the first page is retrieved as BufferedImage.

      If maxDimension is given, the handler should return an image where no dimension extends the given value. This can be used to reduce the memory footprint of large buffered images if the full resolution is not needed.

      Specified by:
      getImage in interface AssetHandler
      Parameters:
      rendition - The rendition for which to retrieve its graphical representation.
      maxDimension - optional constraint for the maximal dimension of the image.
      Returns:
      BufferedImage if a graphical representation exists, otherwise null
      Throws:
      IOException - in case an error is thrown while fetching the buffered image
    • exportAsset

      public void exportAsset(Asset asset, OutputStream stream) throws AssetHandlerException
      This method exports the asset into the given OutputStream. The Assets original binary is served.
      Specified by:
      exportAsset in interface AssetHandler
      Parameters:
      asset - The asset to export.
      stream - The output stream to export into.
      Throws:
      AssetHandlerException - If an error occurred during export.