From 41164123a3a928a2ab76b99e52393a121ad327cb Mon Sep 17 00:00:00 2001 From: brian <brian@brian-linux-laptop> Date: Mon, 18 Jan 2021 15:56:53 -0500 Subject: [PATCH] added engine selection --- .../alfmarkdown/FlexmarkTransformer.java | 5 +++-- .../alfmarkdown/TransformerController.java | 18 ++++++++++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/tengine/src/main/java/com/inteligr8/alfresco/module/alfmarkdown/FlexmarkTransformer.java b/tengine/src/main/java/com/inteligr8/alfresco/module/alfmarkdown/FlexmarkTransformer.java index 2e78a9f..79a2def 100644 --- a/tengine/src/main/java/com/inteligr8/alfresco/module/alfmarkdown/FlexmarkTransformer.java +++ b/tengine/src/main/java/com/inteligr8/alfresco/module/alfmarkdown/FlexmarkTransformer.java @@ -36,9 +36,10 @@ import com.vladsch.flexmark.util.misc.Extension; @Component public class FlexmarkTransformer implements Transformer { + + public static final String ID = "flexmark"; private final Logger logger = LoggerFactory.getLogger(FlexmarkTransformer.class); - private final String id = "flexmark"; private final List<String> classSearchPrefixes = Arrays.asList("", "com.vladsch.flexmark.ext.{name}.", "com.vladsch.flexmark.ext."); private final Pattern extClassNamePattern = Pattern.compile("[\\.]?(([A-Za-z0-9]+)Extension|[A-Za-z0-9]+)$"); @@ -56,7 +57,7 @@ public class FlexmarkTransformer implements Transformer { @Override public String getTransformerId() { - return this.id; + return ID; } @Override diff --git a/tengine/src/main/java/com/inteligr8/alfresco/module/alfmarkdown/TransformerController.java b/tengine/src/main/java/com/inteligr8/alfresco/module/alfmarkdown/TransformerController.java index b225738..9b88e0d 100644 --- a/tengine/src/main/java/com/inteligr8/alfresco/module/alfmarkdown/TransformerController.java +++ b/tengine/src/main/java/com/inteligr8/alfresco/module/alfmarkdown/TransformerController.java @@ -29,6 +29,8 @@ package com.inteligr8.alfresco.module.alfmarkdown; import java.io.File; +import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -75,11 +77,12 @@ public class TransformerController extends AbstractTransformerController { private final MediaType defaultTarget = MediaType.TEXT_HTML; @Autowired - private Transformer transformer; + private List<Transformer> transformers; @Value("${transform.alfmarkdown.version}") private String version; + private Map<String, Transformer> engineMap; private ProbeTestTransform probe; @Override @@ -92,6 +95,13 @@ public class TransformerController extends AbstractTransformerController { return this.version; } + @PostConstruct + public void mapEngines() { + this.engineMap = new HashMap<>(); + for (Transformer transformer : this.transformers) + this.engineMap.put(transformer.getTransformerId(), transformer); + } + @PostConstruct public void initProbe() { this.probe = new ProbeTestTransform(this, "quick.src", "quick.trgt", @@ -137,8 +147,12 @@ public class TransformerController extends AbstractTransformerController { if (!MediaType.TEXT_MARKDOWN_VALUE.equals(sourceMimetype)) throw new TransformException(HttpStatus.BAD_REQUEST.value(), "This transformer does not support source data of the '" + sourceMimetype + "' type"); + String engine = transformOptions.getOrDefault(RequestParamConstants.ENGINE, FlexmarkTransformer.ID); + if (!this.engineMap.containsKey(engine)) + throw new TransformException(HttpStatus.BAD_REQUEST.value(), "This transformer does not support the following engine: " + engine); + try { - this.transformer.transform(transformName, sourceMimetype, targetMimetype, transformOptions, sourceFile, targetFile); + this.engineMap.get(engine).transform(transformName, sourceMimetype, targetMimetype, transformOptions, sourceFile, targetFile); } catch (Exception e) { this.logger.error("The transformation encountered an unexpected issue", e); throw new TransformException(HttpStatus.INTERNAL_SERVER_ERROR.value(), "The transformer encountered an unexpected");