mirror of
https://github.com/Alfresco/alfresco-transform-core.git
synced 2025-08-14 17:58:27 +00:00
Addition of CustomTransformers with default [skip ci]
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Transform Core
|
||||
* %%
|
||||
* Copyright (C) 2022 - 2022 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* -
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
* -
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
* -
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
* -
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
package org.alfresco.transform.base.registry;
|
||||
|
||||
import org.alfresco.transform.base.CustomTransformer;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Component
|
||||
public class CustomTransformers
|
||||
{
|
||||
private static final Logger logger = LoggerFactory.getLogger(CustomTransformers.class);
|
||||
|
||||
@Autowired(required = false)
|
||||
private List<CustomTransformer> customTransformers;
|
||||
|
||||
private final Map<String, CustomTransformer> customTransformersByName = new HashMap<>();
|
||||
|
||||
private CustomTransformer defaultCustomTransformer;
|
||||
|
||||
@PostConstruct
|
||||
private void initCustomTransformersByName()
|
||||
{
|
||||
if (customTransformers != null)
|
||||
{
|
||||
customTransformers.forEach(customTransformer ->
|
||||
customTransformersByName.put(customTransformer.getTransformerName(), customTransformer));
|
||||
|
||||
logger.info("Transformers:");
|
||||
customTransformers.stream()
|
||||
.sorted(Comparator.comparing(CustomTransformer::getTransformerName))
|
||||
.map(customTransformer -> " "+customTransformer.getTransformerName()).forEach(logger::info);
|
||||
}
|
||||
}
|
||||
|
||||
public void setDefaultCustomTransformer(CustomTransformer defaultCustomTransformer)
|
||||
{
|
||||
this.defaultCustomTransformer = defaultCustomTransformer;
|
||||
}
|
||||
|
||||
public CustomTransformer get(String name)
|
||||
{
|
||||
CustomTransformer customTransformer = customTransformersByName.get(name);
|
||||
return customTransformer == null ? defaultCustomTransformer : customTransformer;
|
||||
}
|
||||
|
||||
public void put(String name, CustomTransformer customTransformer)
|
||||
{
|
||||
customTransformersByName.put(name, customTransformer);
|
||||
}
|
||||
}
|
@@ -30,6 +30,7 @@ import org.alfresco.transform.base.CustomTransformer;
|
||||
import org.alfresco.transform.base.TransformController;
|
||||
import org.alfresco.transform.base.logging.LogEntry;
|
||||
import org.alfresco.transform.base.probes.ProbeTransform;
|
||||
import org.alfresco.transform.base.registry.CustomTransformers;
|
||||
import org.alfresco.transform.client.model.TransformRequest;
|
||||
import org.alfresco.transform.common.TransformException;
|
||||
import org.alfresco.transform.common.TransformerDebug;
|
||||
@@ -48,7 +49,6 @@ import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.alfresco.transform.common.RequestParamMap.DIRECT_ACCESS_URL;
|
||||
import static org.alfresco.transform.common.RequestParamMap.SOURCE_ENCODING;
|
||||
import static org.alfresco.transform.common.RequestParamMap.SOURCE_EXTENSION;
|
||||
import static org.alfresco.transform.common.RequestParamMap.SOURCE_MIMETYPE;
|
||||
import static org.alfresco.transform.common.RequestParamMap.TARGET_EXTENSION;
|
||||
@@ -76,11 +76,11 @@ abstract class ProcessHandler extends FragmentHandler
|
||||
private final TransformServiceRegistry transformRegistry;
|
||||
private final TransformerDebug transformerDebug;
|
||||
private final ProbeTransform probeTransform;
|
||||
private final Map<String, CustomTransformer> customTransformersByName;
|
||||
private final CustomTransformers customTransformers;
|
||||
|
||||
ProcessHandler(String sourceMimetype, String targetMimetype, Map<String, String> transformOptions,
|
||||
String reference, TransformServiceRegistry transformRegistry, TransformerDebug transformerDebug,
|
||||
ProbeTransform probeTransform, Map<String, CustomTransformer> customTransformersByName)
|
||||
ProbeTransform probeTransform, CustomTransformers customTransformers)
|
||||
{
|
||||
this.sourceMimetype = sourceMimetype;
|
||||
this.targetMimetype = targetMimetype;
|
||||
@@ -90,7 +90,7 @@ abstract class ProcessHandler extends FragmentHandler
|
||||
this.transformRegistry = transformRegistry;
|
||||
this.transformerDebug = transformerDebug;
|
||||
this.probeTransform = probeTransform;
|
||||
this.customTransformersByName = customTransformersByName;
|
||||
this.customTransformers = customTransformers;
|
||||
}
|
||||
|
||||
private static Map<String, String> cleanTransformOptions(Map<String, String> requestParameters)
|
||||
@@ -198,7 +198,7 @@ abstract class ProcessHandler extends FragmentHandler
|
||||
|
||||
private CustomTransformer getCustomTransformer(String transformName)
|
||||
{
|
||||
CustomTransformer customTransformer = customTransformersByName.get(transformName);
|
||||
CustomTransformer customTransformer = customTransformers.get(transformName);
|
||||
if (customTransformer == null)
|
||||
{
|
||||
throw new TransformException(INTERNAL_SERVER_ERROR, "Custom Transformer "+transformName+" not found");
|
||||
|
@@ -26,12 +26,12 @@
|
||||
*/
|
||||
package org.alfresco.transform.base.transform;
|
||||
|
||||
import org.alfresco.transform.base.CustomTransformer;
|
||||
import org.alfresco.transform.base.TransformEngine;
|
||||
import org.alfresco.transform.base.clients.AlfrescoSharedFileStoreClient;
|
||||
import org.alfresco.transform.base.messaging.TransformReplySender;
|
||||
import org.alfresco.transform.base.model.FileRefResponse;
|
||||
import org.alfresco.transform.base.probes.ProbeTransform;
|
||||
import org.alfresco.transform.base.registry.CustomTransformers;
|
||||
import org.alfresco.transform.client.model.InternalContext;
|
||||
import org.alfresco.transform.client.model.TransformReply;
|
||||
import org.alfresco.transform.client.model.TransformRequest;
|
||||
@@ -53,7 +53,6 @@ import org.springframework.validation.Errors;
|
||||
import org.springframework.web.client.HttpClientErrorException;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.jms.Destination;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.BufferedInputStream;
|
||||
@@ -65,8 +64,6 @@ import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
@@ -93,7 +90,7 @@ public class TransformHandler
|
||||
@Autowired(required = false)
|
||||
private List<TransformEngine> transformEngines;
|
||||
@Autowired(required = false)
|
||||
private List<CustomTransformer> customTransformers;
|
||||
private CustomTransformers customTransformers;
|
||||
@Autowired
|
||||
private AlfrescoSharedFileStoreClient alfrescoSharedFileStoreClient;
|
||||
@Autowired
|
||||
@@ -106,22 +103,6 @@ public class TransformHandler
|
||||
private TransformerDebug transformerDebug;
|
||||
|
||||
private final AtomicInteger httpRequestCount = new AtomicInteger(1);
|
||||
private final Map<String, CustomTransformer> customTransformersByName = new HashMap<>();
|
||||
|
||||
@PostConstruct
|
||||
private void initCustomTransformersByName()
|
||||
{
|
||||
if (customTransformers != null)
|
||||
{
|
||||
customTransformers.forEach(customTransformer ->
|
||||
customTransformersByName.put(customTransformer.getTransformerName(), customTransformer));
|
||||
|
||||
logger.info("Transformers:");
|
||||
customTransformers.stream()
|
||||
.sorted(Comparator.comparing(CustomTransformer::getTransformerName))
|
||||
.map(customTransformer -> " "+customTransformer.getTransformerName()).forEach(logger::info);
|
||||
}
|
||||
}
|
||||
|
||||
public ResponseEntity<Resource> handleHttpRequest(HttpServletRequest request,
|
||||
MultipartFile sourceMultipartFile, String sourceMimetype, String targetMimetype,
|
||||
@@ -131,7 +112,7 @@ public class TransformHandler
|
||||
|
||||
new ProcessHandler(sourceMimetype, targetMimetype, requestParameters,
|
||||
"e" + httpRequestCount.getAndIncrement(), transformRegistry,
|
||||
transformerDebug, probeTransform, customTransformersByName)
|
||||
transformerDebug, probeTransform, customTransformers)
|
||||
{
|
||||
@Override
|
||||
protected void init() throws IOException
|
||||
@@ -175,7 +156,7 @@ public class TransformHandler
|
||||
{
|
||||
new ProcessHandler(sourceMimetype, targetMimetype, transformOptions,
|
||||
"p" + httpRequestCount.getAndIncrement(), transformRegistry,
|
||||
transformerDebug, probeTransform, customTransformersByName)
|
||||
transformerDebug, probeTransform, customTransformers)
|
||||
{
|
||||
@Override
|
||||
protected void init() throws IOException
|
||||
@@ -212,7 +193,7 @@ public class TransformHandler
|
||||
TransformReply reply = createBasicTransformReply(request);
|
||||
new ProcessHandler(request.getSourceMediaType(), request.getTargetMediaType(),
|
||||
request.getTransformRequestOptions(),"unset", transformRegistry,
|
||||
transformerDebug, probeTransform, customTransformersByName)
|
||||
transformerDebug, probeTransform, customTransformers)
|
||||
{
|
||||
@Override
|
||||
protected void init() throws IOException
|
||||
|
@@ -56,6 +56,7 @@ import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.alfresco.transform.base.CustomTransformer;
|
||||
import org.alfresco.transform.base.registry.CustomTransformers;
|
||||
import org.alfresco.transform.client.model.TransformReply;
|
||||
import org.alfresco.transform.client.model.TransformRequest;
|
||||
import org.alfresco.transform.libreoffice.transformers.LibreOfficeTransformer;
|
||||
@@ -89,6 +90,8 @@ public class LibreOfficeTest extends AbstractBaseTest
|
||||
|
||||
@Autowired
|
||||
private LibreOfficeTransformer libreOfficeTransformer;
|
||||
@Autowired
|
||||
private CustomTransformers customTransformers;
|
||||
|
||||
@Spy
|
||||
private LibreOfficeTransformer spyLibreOfficeTransformer;
|
||||
@@ -111,8 +114,7 @@ public class LibreOfficeTest extends AbstractBaseTest
|
||||
@BeforeEach
|
||||
public void before() throws IOException
|
||||
{
|
||||
var customTransformersByName = (Map<String, CustomTransformer>) ReflectionTestUtils.getField(transformHandler, "customTransformersByName");
|
||||
customTransformersByName.put("libreoffice", spyLibreOfficeTransformer);
|
||||
customTransformers.put("libreoffice", spyLibreOfficeTransformer);
|
||||
|
||||
sourceExtension = "doc";
|
||||
targetExtension = "pdf";
|
||||
@@ -157,8 +159,7 @@ public class LibreOfficeTest extends AbstractBaseTest
|
||||
@AfterEach
|
||||
public void after() throws IOException
|
||||
{
|
||||
var customTransformersByName = (Map<String, CustomTransformer>) ReflectionTestUtils.getField(transformHandler, "customTransformersByName");
|
||||
customTransformersByName.put("libreoffice", libreOfficeTransformer);
|
||||
customTransformers.put("libreoffice", libreOfficeTransformer);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Reference in New Issue
Block a user