From 23e837609b0877b2beb844421e2aa55f29ad07a3 Mon Sep 17 00:00:00 2001 From: eknizat <26163420+eknizat@users.noreply.github.com> Date: Mon, 20 Apr 2020 13:47:22 +0100 Subject: [PATCH] ATS-707: add transformName override (#228) [trigger release] * Provide a way for Legacy ACS transformers to specify the transform to perform --- .../alfresco/transformer/AIOController.java | 33 ++++++++++++++++--- 1 file changed, 29 insertions(+), 4 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 88789e1f..6e571462 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 @@ -71,6 +71,14 @@ public class AIOController extends AbstractTransformerController { private static final Logger logger = LoggerFactory.getLogger(AIOController.class); + // This property can be sent by acs repository's legacy transformers to force a transform, + // instead of letting this T-Engine determine it based on the request parameters. + // This allows clients to specify transform names as they appear in the engine config files, for example: + // imagemagick, libreoffice, PdfBox, TikaAuto, .... + // See ATS-731. + @Deprecated + private static final String TRANSFORM_NAME_PROPERTY = "transformName"; + @Autowired private AIOTransformRegistry transformRegistry; @@ -122,14 +130,17 @@ public class AIOController extends AbstractTransformerController @RequestParam(TARGET_MIMETYPE) String targetMimetype, @RequestParam(TARGET_EXTENSION) String targetExtension, @RequestParam Map requestParameters, - @RequestParam (value = TEST_DELAY, required = false) Long testDelay) - { + @RequestParam (value = TEST_DELAY, required = false) Long testDelay, + // The TRANSFORM_NAME_PROPERTY param allows ACS legacy transformers to specify which transform to use, + // It can be removed once legacy transformers are removed from ACS. + @RequestParam (value = TRANSFORM_NAME_PROPERTY, required = false) String requestTransformName) + { debugLogTransform("Request parameters: ", sourceMimetype, targetMimetype, targetExtension, requestParameters); //Remove all required parameters from request parameters to get the list of options List optionsToFilter = Arrays.asList(SOURCE_EXTENSION, TARGET_EXTENSION, TARGET_MIMETYPE, - SOURCE_MIMETYPE, TEST_DELAY); + SOURCE_MIMETYPE, TEST_DELAY, TRANSFORM_NAME_PROPERTY); Map transformOptions = new HashMap<>(requestParameters); transformOptions.keySet().removeAll(optionsToFilter); transformOptions.values().removeIf(v -> v.isEmpty()); @@ -140,7 +151,21 @@ public class AIOController extends AbstractTransformerController final File sourceFile = createSourceFile(request, sourceMultipartFile); final File targetFile = createTargetFile(request, targetFilename); - final String transform = getTransformerName(sourceFile, sourceMimetype, targetMimetype, transformOptions); + // Check if transformName was provided in the request (this can happen for ACS legacy transformers) + String transform = requestTransformName; + if (transform == null || transform.isEmpty()) + { + if (logger.isDebugEnabled()) + { + logger.debug("Using engine config to determine the transform name."); + } + transform = getTransformerName(sourceFile, sourceMimetype, targetMimetype, transformOptions); + } + else if (logger.isDebugEnabled()) + { + logger.debug("Using transform name provided by the request."); + } + debugLogTransform("Performing transform with parameters: ", sourceMimetype, targetMimetype, targetExtension, transformOptions); transformInternal(transform, sourceFile, targetFile, sourceMimetype, targetMimetype, transformOptions);