class AssetRenditionsDownloadServlet extends SlingAllMethodsServlet implements AssetRenditionsDownloadOrchestratorManager {

    @Override
    protected final void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
        servletHelper.addSlingBindings(request, response);

        final List<String> renditionNames = getRenditionNames(request);
        final List<AssetModel> assets = getAssets(request);
        final String id = getAssetRenditionsDownloadOrchestratorId(request);

        final AssetRenditionsDownloadOrchestrator orchestrator = getAssetRenditionsDownloadOrchestrator(id);

        if (orchestrator == null) {
            log.warn("Invalid AssetRenditionsDownloadOrchestrator ID [ {} ]", id);
            response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
            return;
        }

        try {
            orchestrator.execute(request, response, assets, renditionNames);
        } catch (AssetRenditionsException e) {
            throw new ServletException(e);
        }
    }

}