added engine selection

This commit is contained in:
brian 2021-01-18 15:56:53 -05:00
parent b448025ee2
commit 41164123a3
2 changed files with 19 additions and 4 deletions

View File

@ -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

View File

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