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);