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.TransformController;
|
||||||
import org.alfresco.transform.base.logging.LogEntry;
|
import org.alfresco.transform.base.logging.LogEntry;
|
||||||
import org.alfresco.transform.base.probes.ProbeTransform;
|
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.client.model.TransformRequest;
|
||||||
import org.alfresco.transform.common.TransformException;
|
import org.alfresco.transform.common.TransformException;
|
||||||
import org.alfresco.transform.common.TransformerDebug;
|
import org.alfresco.transform.common.TransformerDebug;
|
||||||
@@ -48,7 +49,6 @@ import java.util.Map;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static org.alfresco.transform.common.RequestParamMap.DIRECT_ACCESS_URL;
|
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_EXTENSION;
|
||||||
import static org.alfresco.transform.common.RequestParamMap.SOURCE_MIMETYPE;
|
import static org.alfresco.transform.common.RequestParamMap.SOURCE_MIMETYPE;
|
||||||
import static org.alfresco.transform.common.RequestParamMap.TARGET_EXTENSION;
|
import static org.alfresco.transform.common.RequestParamMap.TARGET_EXTENSION;
|
||||||
@@ -76,11 +76,11 @@ abstract class ProcessHandler extends FragmentHandler
|
|||||||
private final TransformServiceRegistry transformRegistry;
|
private final TransformServiceRegistry transformRegistry;
|
||||||
private final TransformerDebug transformerDebug;
|
private final TransformerDebug transformerDebug;
|
||||||
private final ProbeTransform probeTransform;
|
private final ProbeTransform probeTransform;
|
||||||
private final Map<String, CustomTransformer> customTransformersByName;
|
private final CustomTransformers customTransformers;
|
||||||
|
|
||||||
ProcessHandler(String sourceMimetype, String targetMimetype, Map<String, String> transformOptions,
|
ProcessHandler(String sourceMimetype, String targetMimetype, Map<String, String> transformOptions,
|
||||||
String reference, TransformServiceRegistry transformRegistry, TransformerDebug transformerDebug,
|
String reference, TransformServiceRegistry transformRegistry, TransformerDebug transformerDebug,
|
||||||
ProbeTransform probeTransform, Map<String, CustomTransformer> customTransformersByName)
|
ProbeTransform probeTransform, CustomTransformers customTransformers)
|
||||||
{
|
{
|
||||||
this.sourceMimetype = sourceMimetype;
|
this.sourceMimetype = sourceMimetype;
|
||||||
this.targetMimetype = targetMimetype;
|
this.targetMimetype = targetMimetype;
|
||||||
@@ -90,7 +90,7 @@ abstract class ProcessHandler extends FragmentHandler
|
|||||||
this.transformRegistry = transformRegistry;
|
this.transformRegistry = transformRegistry;
|
||||||
this.transformerDebug = transformerDebug;
|
this.transformerDebug = transformerDebug;
|
||||||
this.probeTransform = probeTransform;
|
this.probeTransform = probeTransform;
|
||||||
this.customTransformersByName = customTransformersByName;
|
this.customTransformers = customTransformers;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Map<String, String> cleanTransformOptions(Map<String, String> requestParameters)
|
private static Map<String, String> cleanTransformOptions(Map<String, String> requestParameters)
|
||||||
@@ -198,7 +198,7 @@ abstract class ProcessHandler extends FragmentHandler
|
|||||||
|
|
||||||
private CustomTransformer getCustomTransformer(String transformName)
|
private CustomTransformer getCustomTransformer(String transformName)
|
||||||
{
|
{
|
||||||
CustomTransformer customTransformer = customTransformersByName.get(transformName);
|
CustomTransformer customTransformer = customTransformers.get(transformName);
|
||||||
if (customTransformer == null)
|
if (customTransformer == null)
|
||||||
{
|
{
|
||||||
throw new TransformException(INTERNAL_SERVER_ERROR, "Custom Transformer "+transformName+" not found");
|
throw new TransformException(INTERNAL_SERVER_ERROR, "Custom Transformer "+transformName+" not found");
|
||||||
|
@@ -26,12 +26,12 @@
|
|||||||
*/
|
*/
|
||||||
package org.alfresco.transform.base.transform;
|
package org.alfresco.transform.base.transform;
|
||||||
|
|
||||||
import org.alfresco.transform.base.CustomTransformer;
|
|
||||||
import org.alfresco.transform.base.TransformEngine;
|
import org.alfresco.transform.base.TransformEngine;
|
||||||
import org.alfresco.transform.base.clients.AlfrescoSharedFileStoreClient;
|
import org.alfresco.transform.base.clients.AlfrescoSharedFileStoreClient;
|
||||||
import org.alfresco.transform.base.messaging.TransformReplySender;
|
import org.alfresco.transform.base.messaging.TransformReplySender;
|
||||||
import org.alfresco.transform.base.model.FileRefResponse;
|
import org.alfresco.transform.base.model.FileRefResponse;
|
||||||
import org.alfresco.transform.base.probes.ProbeTransform;
|
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.InternalContext;
|
||||||
import org.alfresco.transform.client.model.TransformReply;
|
import org.alfresco.transform.client.model.TransformReply;
|
||||||
import org.alfresco.transform.client.model.TransformRequest;
|
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.client.HttpClientErrorException;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
|
||||||
import javax.jms.Destination;
|
import javax.jms.Destination;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.io.BufferedInputStream;
|
import java.io.BufferedInputStream;
|
||||||
@@ -65,8 +64,6 @@ import java.io.FileOutputStream;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
@@ -93,7 +90,7 @@ public class TransformHandler
|
|||||||
@Autowired(required = false)
|
@Autowired(required = false)
|
||||||
private List<TransformEngine> transformEngines;
|
private List<TransformEngine> transformEngines;
|
||||||
@Autowired(required = false)
|
@Autowired(required = false)
|
||||||
private List<CustomTransformer> customTransformers;
|
private CustomTransformers customTransformers;
|
||||||
@Autowired
|
@Autowired
|
||||||
private AlfrescoSharedFileStoreClient alfrescoSharedFileStoreClient;
|
private AlfrescoSharedFileStoreClient alfrescoSharedFileStoreClient;
|
||||||
@Autowired
|
@Autowired
|
||||||
@@ -106,22 +103,6 @@ public class TransformHandler
|
|||||||
private TransformerDebug transformerDebug;
|
private TransformerDebug transformerDebug;
|
||||||
|
|
||||||
private final AtomicInteger httpRequestCount = new AtomicInteger(1);
|
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,
|
public ResponseEntity<Resource> handleHttpRequest(HttpServletRequest request,
|
||||||
MultipartFile sourceMultipartFile, String sourceMimetype, String targetMimetype,
|
MultipartFile sourceMultipartFile, String sourceMimetype, String targetMimetype,
|
||||||
@@ -131,7 +112,7 @@ public class TransformHandler
|
|||||||
|
|
||||||
new ProcessHandler(sourceMimetype, targetMimetype, requestParameters,
|
new ProcessHandler(sourceMimetype, targetMimetype, requestParameters,
|
||||||
"e" + httpRequestCount.getAndIncrement(), transformRegistry,
|
"e" + httpRequestCount.getAndIncrement(), transformRegistry,
|
||||||
transformerDebug, probeTransform, customTransformersByName)
|
transformerDebug, probeTransform, customTransformers)
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
protected void init() throws IOException
|
protected void init() throws IOException
|
||||||
@@ -175,7 +156,7 @@ public class TransformHandler
|
|||||||
{
|
{
|
||||||
new ProcessHandler(sourceMimetype, targetMimetype, transformOptions,
|
new ProcessHandler(sourceMimetype, targetMimetype, transformOptions,
|
||||||
"p" + httpRequestCount.getAndIncrement(), transformRegistry,
|
"p" + httpRequestCount.getAndIncrement(), transformRegistry,
|
||||||
transformerDebug, probeTransform, customTransformersByName)
|
transformerDebug, probeTransform, customTransformers)
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
protected void init() throws IOException
|
protected void init() throws IOException
|
||||||
@@ -212,7 +193,7 @@ public class TransformHandler
|
|||||||
TransformReply reply = createBasicTransformReply(request);
|
TransformReply reply = createBasicTransformReply(request);
|
||||||
new ProcessHandler(request.getSourceMediaType(), request.getTargetMediaType(),
|
new ProcessHandler(request.getSourceMediaType(), request.getTargetMediaType(),
|
||||||
request.getTransformRequestOptions(),"unset", transformRegistry,
|
request.getTransformRequestOptions(),"unset", transformRegistry,
|
||||||
transformerDebug, probeTransform, customTransformersByName)
|
transformerDebug, probeTransform, customTransformers)
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
protected void init() throws IOException
|
protected void init() throws IOException
|
||||||
|
@@ -56,6 +56,7 @@ import java.util.Map;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.alfresco.transform.base.CustomTransformer;
|
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.TransformReply;
|
||||||
import org.alfresco.transform.client.model.TransformRequest;
|
import org.alfresco.transform.client.model.TransformRequest;
|
||||||
import org.alfresco.transform.libreoffice.transformers.LibreOfficeTransformer;
|
import org.alfresco.transform.libreoffice.transformers.LibreOfficeTransformer;
|
||||||
@@ -89,6 +90,8 @@ public class LibreOfficeTest extends AbstractBaseTest
|
|||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private LibreOfficeTransformer libreOfficeTransformer;
|
private LibreOfficeTransformer libreOfficeTransformer;
|
||||||
|
@Autowired
|
||||||
|
private CustomTransformers customTransformers;
|
||||||
|
|
||||||
@Spy
|
@Spy
|
||||||
private LibreOfficeTransformer spyLibreOfficeTransformer;
|
private LibreOfficeTransformer spyLibreOfficeTransformer;
|
||||||
@@ -111,8 +114,7 @@ public class LibreOfficeTest extends AbstractBaseTest
|
|||||||
@BeforeEach
|
@BeforeEach
|
||||||
public void before() throws IOException
|
public void before() throws IOException
|
||||||
{
|
{
|
||||||
var customTransformersByName = (Map<String, CustomTransformer>) ReflectionTestUtils.getField(transformHandler, "customTransformersByName");
|
customTransformers.put("libreoffice", spyLibreOfficeTransformer);
|
||||||
customTransformersByName.put("libreoffice", spyLibreOfficeTransformer);
|
|
||||||
|
|
||||||
sourceExtension = "doc";
|
sourceExtension = "doc";
|
||||||
targetExtension = "pdf";
|
targetExtension = "pdf";
|
||||||
@@ -157,8 +159,7 @@ public class LibreOfficeTest extends AbstractBaseTest
|
|||||||
@AfterEach
|
@AfterEach
|
||||||
public void after() throws IOException
|
public void after() throws IOException
|
||||||
{
|
{
|
||||||
var customTransformersByName = (Map<String, CustomTransformer>) ReflectionTestUtils.getField(transformHandler, "customTransformersByName");
|
customTransformers.put("libreoffice", libreOfficeTransformer);
|
||||||
customTransformersByName.put("libreoffice", libreOfficeTransformer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Reference in New Issue
Block a user