From d495459b9bbcc8b0fba5a21c9397f1a606de4fbb Mon Sep 17 00:00:00 2001 From: Alan Davis Date: Tue, 16 Jun 2020 14:41:49 +0100 Subject: [PATCH] ATS-777 / REPO-4334: Move metadata extraction into T-Engines (#256) * REPO-4334 Move metadata extraction into T-Engines - new "transformImpl" required (processTransform deprecated) - JavaDoc Co-authored-by: Jan Vonka --- .../alfresco/transformer/AIOController.java | 6 +- .../transformer/ImageMagickController.java | 6 +- .../transformer/LibreOfficeController.java | 6 +- .../alfresco/transformer/MiscController.java | 6 +- .../AlfrescoPdfRendererController.java | 6 +- .../alfresco/transformer/TikaController.java | 6 +- .../AbstractTransformerController.java | 32 ++++------ .../transformer/TransformController.java | 59 ++++++++++++++++++- 8 files changed, 85 insertions(+), 42 deletions(-) diff --git a/alfresco-transform-core-aio/alfresco-transform-core-aio-boot/src/main/java/org/alfresco/transformer/AIOController.java b/alfresco-transform-core-aio/alfresco-transform-core-aio-boot/src/main/java/org/alfresco/transformer/AIOController.java index b3a16f98..5d1beca4 100644 --- a/alfresco-transform-core-aio/alfresco-transform-core-aio-boot/src/main/java/org/alfresco/transformer/AIOController.java +++ b/alfresco-transform-core-aio/alfresco-transform-core-aio-boot/src/main/java/org/alfresco/transformer/AIOController.java @@ -82,7 +82,7 @@ public class AIOController extends AbstractTransformerController { Map parameters = new HashMap<>(); parameters.put(SOURCE_ENCODING, "UTF-8"); - transform("html", MIMETYPE_HTML, MIMETYPE_TEXT_PLAIN, parameters, sourceFile, targetFile); + transformImpl("html", MIMETYPE_HTML, MIMETYPE_TEXT_PLAIN, parameters, sourceFile, targetFile); } }; } @@ -96,8 +96,8 @@ public class AIOController extends AbstractTransformerController } @Override - protected void transform(String transformName, String sourceMimetype, String targetMimetype, - Map transformOptions, File sourceFile, File targetFile) + public void transformImpl(String transformName, String sourceMimetype, String targetMimetype, + Map transformOptions, File sourceFile, File targetFile) { logger.debug("Processing transform with: transformName; '{}', sourceFile '{}', targetFile '{}', transformOptions" + " {}", transformName, sourceFile, targetFile, transformOptions); diff --git a/alfresco-transform-imagemagick/alfresco-transform-imagemagick-boot/src/main/java/org/alfresco/transformer/ImageMagickController.java b/alfresco-transform-imagemagick/alfresco-transform-imagemagick-boot/src/main/java/org/alfresco/transformer/ImageMagickController.java index c1931e67..c01c86b9 100644 --- a/alfresco-transform-imagemagick/alfresco-transform-imagemagick-boot/src/main/java/org/alfresco/transformer/ImageMagickController.java +++ b/alfresco-transform-imagemagick/alfresco-transform-imagemagick-boot/src/main/java/org/alfresco/transformer/ImageMagickController.java @@ -110,7 +110,7 @@ public class ImageMagickController extends AbstractTransformerController @Override protected void executeTransformCommand(File sourceFile, File targetFile) { - transform(null, null, null, Collections.emptyMap(), sourceFile, targetFile); + transformImpl(null, null, null, Collections.emptyMap(), sourceFile, targetFile); } }; } @@ -123,8 +123,8 @@ public class ImageMagickController extends AbstractTransformerController } @Override - protected void transform(String transformName, String sourceMimetype, String targetMimetype, - Map transformOptions, File sourceFile, File targetFile) + public void transformImpl(String transformName, String sourceMimetype, String targetMimetype, + Map transformOptions, File sourceFile, File targetFile) { commandExecutor.transform(sourceMimetype, targetMimetype, transformOptions, sourceFile, targetFile); } diff --git a/alfresco-transform-libreoffice/alfresco-transform-libreoffice-boot/src/main/java/org/alfresco/transformer/LibreOfficeController.java b/alfresco-transform-libreoffice/alfresco-transform-libreoffice-boot/src/main/java/org/alfresco/transformer/LibreOfficeController.java index 29552527..309481fa 100644 --- a/alfresco-transform-libreoffice/alfresco-transform-libreoffice-boot/src/main/java/org/alfresco/transformer/LibreOfficeController.java +++ b/alfresco-transform-libreoffice/alfresco-transform-libreoffice-boot/src/main/java/org/alfresco/transformer/LibreOfficeController.java @@ -96,7 +96,7 @@ public class LibreOfficeController extends AbstractTransformerController @Override protected void executeTransformCommand(File sourceFile, File targetFile) { - transform(null, null, null, Collections.emptyMap(), sourceFile, targetFile); + transformImpl(null, null, null, Collections.emptyMap(), sourceFile, targetFile); javaExecutor.call(sourceFile, targetFile); } }; @@ -110,8 +110,8 @@ public class LibreOfficeController extends AbstractTransformerController } @Override - protected void transform(String transformName, String sourceMimetype, String targetMimetype, - Map transformOptions, File sourceFile, File targetFile) + public void transformImpl(String transformName, String sourceMimetype, String targetMimetype, + Map transformOptions, File sourceFile, File targetFile) { javaExecutor.transform(sourceMimetype, targetMimetype, transformOptions, sourceFile, targetFile); } diff --git a/alfresco-transform-misc/alfresco-transform-misc-boot/src/main/java/org/alfresco/transformer/MiscController.java b/alfresco-transform-misc/alfresco-transform-misc-boot/src/main/java/org/alfresco/transformer/MiscController.java index cc843b33..6a5498fe 100644 --- a/alfresco-transform-misc/alfresco-transform-misc-boot/src/main/java/org/alfresco/transformer/MiscController.java +++ b/alfresco-transform-misc/alfresco-transform-misc-boot/src/main/java/org/alfresco/transformer/MiscController.java @@ -74,14 +74,14 @@ public class MiscController extends AbstractTransformerController { Map parameters = new HashMap<>(); parameters.put(SOURCE_ENCODING, "UTF-8"); - transform("html", MIMETYPE_HTML, MIMETYPE_TEXT_PLAIN, parameters, sourceFile, targetFile); + transformImpl("html", MIMETYPE_HTML, MIMETYPE_TEXT_PLAIN, parameters, sourceFile, targetFile); } }; } @Override - protected void transform(String transformName, String sourceMimetype, String targetMimetype, - Map transformOptions, File sourceFile, File targetFile) + public void transformImpl(String transformName, String sourceMimetype, String targetMimetype, + Map transformOptions, File sourceFile, File targetFile) { transformOptions.put(TRANSFORM_NAME_PARAMETER, transformName); transformer.transform(sourceMimetype, targetMimetype, transformOptions, sourceFile, targetFile); diff --git a/alfresco-transform-pdf-renderer/alfresco-transform-pdf-renderer-boot/src/main/java/org/alfresco/transformer/AlfrescoPdfRendererController.java b/alfresco-transform-pdf-renderer/alfresco-transform-pdf-renderer-boot/src/main/java/org/alfresco/transformer/AlfrescoPdfRendererController.java index 5b6f1449..5a9f57a6 100644 --- a/alfresco-transform-pdf-renderer/alfresco-transform-pdf-renderer-boot/src/main/java/org/alfresco/transformer/AlfrescoPdfRendererController.java +++ b/alfresco-transform-pdf-renderer/alfresco-transform-pdf-renderer-boot/src/main/java/org/alfresco/transformer/AlfrescoPdfRendererController.java @@ -97,7 +97,7 @@ public class AlfrescoPdfRendererController extends AbstractTransformerController @Override protected void executeTransformCommand(File sourceFile, File targetFile) { - transform(null, null, null, Collections.emptyMap(), sourceFile, targetFile); + transformImpl(null, null, null, Collections.emptyMap(), sourceFile, targetFile); } }; } @@ -110,8 +110,8 @@ public class AlfrescoPdfRendererController extends AbstractTransformerController } @Override - protected void transform(String transformName, String sourceMimetype, String targetMimetype, - Map transformOptions, File sourceFile, File targetFile) + public void transformImpl(String transformName, String sourceMimetype, String targetMimetype, + Map transformOptions, File sourceFile, File targetFile) { commandExecutor.transform(sourceMimetype, targetMimetype, transformOptions, sourceFile, targetFile); } diff --git a/alfresco-transform-tika/alfresco-transform-tika-boot/src/main/java/org/alfresco/transformer/TikaController.java b/alfresco-transform-tika/alfresco-transform-tika-boot/src/main/java/org/alfresco/transformer/TikaController.java index 4d7a7535..618e4723 100644 --- a/alfresco-transform-tika/alfresco-transform-tika-boot/src/main/java/org/alfresco/transformer/TikaController.java +++ b/alfresco-transform-tika/alfresco-transform-tika-boot/src/main/java/org/alfresco/transformer/TikaController.java @@ -92,14 +92,14 @@ public class TikaController extends AbstractTransformerController @Override protected void executeTransformCommand(File sourceFile, File targetFile) { - transform(PDF_BOX, MIMETYPE_PDF, MIMETYPE_TEXT_PLAIN, Collections.emptyMap(), sourceFile, targetFile); + transformImpl(PDF_BOX, MIMETYPE_PDF, MIMETYPE_TEXT_PLAIN, Collections.emptyMap(), sourceFile, targetFile); } }; } @Override - protected void transform(String transformName, String sourceMimetype, String targetMimetype, - Map transformOptions, File sourceFile, File targetFile) + public void transformImpl(String transformName, String sourceMimetype, String targetMimetype, + Map transformOptions, File sourceFile, File targetFile) { transformOptions.put(TRANSFORM_NAME_PARAMETER, transformName); javaExecutor.transform(sourceMimetype, targetMimetype, transformOptions, sourceFile, targetFile); diff --git a/alfresco-transformer-base/src/main/java/org/alfresco/transformer/AbstractTransformerController.java b/alfresco-transformer-base/src/main/java/org/alfresco/transformer/AbstractTransformerController.java index 65fcb6c3..70a6e05d 100644 --- a/alfresco-transformer-base/src/main/java/org/alfresco/transformer/AbstractTransformerController.java +++ b/alfresco-transformer-base/src/main/java/org/alfresco/transformer/AbstractTransformerController.java @@ -87,7 +87,9 @@ import static org.springframework.http.MediaType.MULTIPART_FORM_DATA_VALUE; import static org.springframework.util.StringUtils.getFilenameExtension; /** - *

Abstract Controller, provides structure and helper methods to sub-class transformer controllers.

+ *

Abstract Controller, provides structure and helper methods to sub-class transformer controllers. Sub classes + * should implement {@link #transformImpl(String, String, String, Map, File, File)} and unimplemented methods from + * {@link TransformController}.

* *

Status Codes:

*
    @@ -168,7 +170,7 @@ public abstract class AbstractTransformerController implements TransformControll Map transformOptions = getTransformOptions(requestParameters); String transformName = getTransformerName(sourceMimetype, targetMimetype, requestTransformName, sourceFile, transformOptions); - transform(transformName, sourceMimetype, targetMimetype, transformOptions, sourceFile, targetFile); + transformImpl(transformName, sourceMimetype, targetMimetype, transformOptions, sourceFile, targetFile); final ResponseEntity body = createAttachment(targetFilename, targetFile); LogEntry.setTargetSize(targetFile.length()); @@ -264,8 +266,12 @@ public abstract class AbstractTransformerController implements TransformControll // Run the transformation try { - processTransform(sourceFile, targetFile, request.getSourceMediaType(), - request.getTargetMediaType(), request.getTransformRequestOptions(), timeout); + + String targetMimetype = request.getTargetMediaType(); + String sourceMimetype = request.getSourceMediaType(); + Map transformOptions = request.getTransformRequestOptions(); + String transformName = getTransformerName(sourceFile, sourceMimetype, targetMimetype, transformOptions); + transformImpl(transformName, sourceMimetype, targetMimetype, transformOptions, sourceFile, targetFile); } catch (TransformException e) { @@ -403,21 +409,6 @@ public abstract class AbstractTransformerController implements TransformControll return sb.toString(); } - public void processTransform(final File sourceFile, final File targetFile, - final String sourceMimetype, final String targetMimetype, - final Map transformOptions, final Long timeout) - { - if (logger.isDebugEnabled()) - { - logger.debug( - "Processing request with: sourceFile '{}', targetFile '{}', transformOptions" + - " '{}', timeout {} ms", sourceFile, targetFile, transformOptions, timeout); - } - - String transformName = getTransformerName(sourceFile, sourceMimetype, targetMimetype, transformOptions); - transform(transformName, sourceMimetype, targetMimetype, transformOptions, sourceFile, targetFile); - } - private String getTransformerName(String sourceMimetype, String targetMimetype, String requestTransformName, File sourceFile, Map transformOptions) @@ -483,7 +474,4 @@ public abstract class AbstractTransformerController implements TransformControll } return transformOptions; } - - protected abstract void transform(String transformName, String sourceMimetype, String targetMimetype, - Map transformOptions, File sourceFile, File targetFile); } diff --git a/alfresco-transformer-base/src/main/java/org/alfresco/transformer/TransformController.java b/alfresco-transformer-base/src/main/java/org/alfresco/transformer/TransformController.java index c8845bb2..858d262b 100644 --- a/alfresco-transformer-base/src/main/java/org/alfresco/transformer/TransformController.java +++ b/alfresco-transformer-base/src/main/java/org/alfresco/transformer/TransformController.java @@ -63,37 +63,86 @@ public interface TransformController { Logger logger = LoggerFactory.getLogger(TransformController.class); + /** + * Should be overridden in subclasses to initiate the transformation. + * + * @param transformName the name of the transformer in the engine_config.json file + * @param sourceMimetype mimetype of the source + * @param targetMimetype mimetype of the target + * @param transformOptions transform options from the client + * @param sourceFile the source file + * @param targetFile the target file + */ + void transformImpl(String transformName, String sourceMimetype, String targetMimetype, + Map transformOptions, File sourceFile, File targetFile); + + /** + * @deprecated use {@link #transformImpl(String, String, String, Map, File, File)} and timeout should be part of + * the transformOptions created from the TransformRequest. + */ + @Deprecated ResponseEntity transform(TransformRequest transformRequest, Long timeout); - void processTransform(final File sourceFile, final File targetFile, + /** + * @deprecated use {@link #transformImpl(String, String, String, Map, File, File)}. + */ + @Deprecated + default void processTransform(final File sourceFile, final File targetFile, final String sourceMimetype, final String targetMimetype, - final Map transformOptions, final Long timeout); + final Map transformOptions, final Long timeout) + { + } + /** + * @return a friendly name for the T-Engine. + */ String getTransformerName(); + /** + * Provides the Kubernetes pod probes. + */ ProbeTestTransform getProbeTestTransform(); + /** + * Method used by Kubernetes pod probes. + */ default String probe(HttpServletRequest request, boolean isLiveProbe) { return getProbeTestTransform().doTransformOrNothing(request, isLiveProbe); } + /** + * @return a string that may be used by clients in debug. It need not include the version. + */ @RequestMapping("/version") @ResponseBody String version(); + /** + * @return the name of a template to test the T-Engine. Defaults to {@code "transformForm"}. + */ @GetMapping("/") default String transformForm(Model model) { return "transformForm"; // the name of the template } + /** + * @return the name of a template to display when there is an error when using the test UI for the T-Engine. + * Defaults to {@code "error"}. + * @See #transformForm + */ @GetMapping("/error") default String error() { return "error"; // the name of the template } + /** + * @return the name of a template to display log messages when using the test UI for the T-Engine. + * Defaults to {@code "log"}. + * @See #transformForm + */ @GetMapping("/log") default String log(Model model) { @@ -106,6 +155,9 @@ public interface TransformController return "log"; // the name of the template } + /** + * Method used by Kubernetes ready pod probes. + */ @GetMapping("/ready") @ResponseBody default String ready(HttpServletRequest request) @@ -113,6 +165,9 @@ public interface TransformController return probe(request, false); } + /** + * Method used by Kubernetes live pod probes. + */ @GetMapping("/live") @ResponseBody default String live(HttpServletRequest request)