diff --git a/deprecated/alfresco-transformer-base/src/main/java/org/alfresco/transformer/TransformRegistryImpl.java b/deprecated/alfresco-transformer-base/src/main/java/org/alfresco/transformer/TransformRegistryImpl.java
index 8a3f3024..d3fb4092 100644
--- a/deprecated/alfresco-transformer-base/src/main/java/org/alfresco/transformer/TransformRegistryImpl.java
+++ b/deprecated/alfresco-transformer-base/src/main/java/org/alfresco/transformer/TransformRegistryImpl.java
@@ -62,7 +62,7 @@ public class TransformRegistryImpl extends AbstractTransformRegistry
@Value("${transform.core.config.location:classpath:engine_config.json}")
private String locationFromProperty;
- @Value("${transform.core.version}")
+ @Autowired
private String coreVersion;
private Resource engineConfig;
diff --git a/deprecated/alfresco-transformer-base/src/test/java/org/alfresco/transformer/AbstractTransformerControllerTest.java b/deprecated/alfresco-transformer-base/src/test/java/org/alfresco/transformer/AbstractTransformerControllerTest.java
index 8b3c7cb3..bbf1de72 100644
--- a/deprecated/alfresco-transformer-base/src/test/java/org/alfresco/transformer/AbstractTransformerControllerTest.java
+++ b/deprecated/alfresco-transformer-base/src/test/java/org/alfresco/transformer/AbstractTransformerControllerTest.java
@@ -114,7 +114,7 @@ public abstract class AbstractTransformerControllerTest
@SpyBean
protected TransformServiceRegistry transformRegistry;
- @Value("${transform.core.version}")
+ @Autowired
private String coreVersion;
protected String sourceExtension;
diff --git a/engines/aio/src/main/java/org/alfresco/transform/coreaio/AIOTransformEngine.java b/engines/aio/src/main/java/org/alfresco/transform/coreaio/AIOTransformEngine.java
index 365918d7..c67f8379 100644
--- a/engines/aio/src/main/java/org/alfresco/transform/coreaio/AIOTransformEngine.java
+++ b/engines/aio/src/main/java/org/alfresco/transform/coreaio/AIOTransformEngine.java
@@ -27,7 +27,7 @@
package org.alfresco.transform.coreaio;
import org.alfresco.transform.base.TransformEngine;
-import org.alfresco.transform.base.probes.ProbeTestTransform;
+import org.alfresco.transform.base.probes.ProbeTransform;
import org.alfresco.transform.config.TransformConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -76,9 +76,9 @@ public class AIOTransformEngine implements TransformEngine
}
@Override
- public ProbeTestTransform getLivenessAndReadinessProbeTestTransform()
+ public ProbeTransform getProbeTransform()
{
- return new ProbeTestTransform("quick.pdf", "quick.txt",
+ return new ProbeTransform("quick.pdf", "quick.txt",
MIMETYPE_PDF, MIMETYPE_TEXT_PLAIN, Collections.emptyMap(),
60, 16, 400, 10240, 60 * 30 + 1, 60 * 15 + 20);
}
diff --git a/engines/aio/src/test/java/org/alfresco/transform/aio/AIOTest.java b/engines/aio/src/test/java/org/alfresco/transform/aio/AIOTest.java
index 488fe849..d1e55f5b 100644
--- a/engines/aio/src/test/java/org/alfresco/transform/aio/AIOTest.java
+++ b/engines/aio/src/test/java/org/alfresco/transform/aio/AIOTest.java
@@ -46,7 +46,7 @@ import static org.junit.jupiter.api.Assertions.assertNull;
*/
public class AIOTest extends AbstractBaseTest
{
- @Value("${transform.core.version}")
+ @Autowired
private String coreVersion;
//@Override
diff --git a/engines/base/pom.xml b/engines/base/pom.xml
index f9ebdc99..1e56a7ba 100644
--- a/engines/base/pom.xml
+++ b/engines/base/pom.xml
@@ -74,6 +74,11 @@
google-collections
1.0
+
+ ch.qos.logback
+ logback-classic
+ 1.2.6
+
diff --git a/engines/base/src/main/java/org/alfresco/transform/base/TransformController.java b/engines/base/src/main/java/org/alfresco/transform/base/TransformController.java
index 11f58707..f846e4e6 100644
--- a/engines/base/src/main/java/org/alfresco/transform/base/TransformController.java
+++ b/engines/base/src/main/java/org/alfresco/transform/base/TransformController.java
@@ -27,7 +27,7 @@
package org.alfresco.transform.base;
import org.alfresco.transform.base.logging.LogEntry;
-import org.alfresco.transform.base.probes.ProbeTestTransform;
+import org.alfresco.transform.base.probes.ProbeTransform;
import org.alfresco.transform.common.TransformException;
import org.alfresco.transform.config.TransformConfig;
import org.alfresco.transform.registry.TransformServiceRegistry;
@@ -66,11 +66,14 @@ import static java.text.MessageFormat.format;
import static org.alfresco.transform.common.RequestParamMap.CONFIG_VERSION;
import static org.alfresco.transform.common.RequestParamMap.CONFIG_VERSION_DEFAULT;
import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_ERROR;
+import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_LIVE;
import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_LOG;
+import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_READY;
import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_ROOT;
import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_TEST;
import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_TRANSFORM;
import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_TRANSFORM_CONFIG;
+import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_VERSION;
import static org.alfresco.transform.common.RequestParamMap.FILE;
import static org.alfresco.transform.common.RequestParamMap.SOURCE_MIMETYPE;
import static org.alfresco.transform.common.RequestParamMap.TARGET_MIMETYPE;
@@ -93,17 +96,17 @@ public class TransformController
private TransformServiceRegistry transformRegistry;
@Autowired
private TransformHandler transformHandler;
- @Value("${transform.core.version}")
+ @Autowired
private String coreVersion;
- private TransformEngine transformEngine;
- ProbeTestTransform probeTestTransform;
+ TransformEngine transformEngine;
+ ProbeTransform probeTransform;
@PostConstruct
private void init()
{
transformEngine = transformHandler.getTransformEngine();
- probeTestTransform = transformHandler.getProbeTestTransform();
+ probeTransform = transformHandler.getProbeTestTransform();
}
@EventListener(ApplicationReadyEvent.class)
@@ -122,7 +125,7 @@ public class TransformController
/**
* @return a string that may be used in client debug.
*/
- @RequestMapping("/version")
+ @RequestMapping(ENDPOINT_VERSION)
@ResponseBody
public String version()
{
@@ -167,21 +170,21 @@ public class TransformController
/**
* Kubernetes readiness probe.
*/
- @GetMapping("/ready")
+ @GetMapping(ENDPOINT_READY)
@ResponseBody
public String ready(HttpServletRequest request)
{
- return probeTestTransform.doTransformOrNothing(request, false, this);
+ return probeTransform.doTransformOrNothing(request, false, this);
}
/**
* Kubernetes liveness probe.
*/
- @GetMapping("/live")
+ @GetMapping(ENDPOINT_LIVE)
@ResponseBody
public String live(HttpServletRequest request)
{
- return probeTestTransform.doTransformOrNothing(request, true, this);
+ return probeTransform.doTransformOrNothing(request, true, this);
}
@GetMapping(value = ENDPOINT_TRANSFORM_CONFIG)
@@ -197,8 +200,8 @@ public class TransformController
@PostMapping(value = ENDPOINT_TRANSFORM, consumes = MULTIPART_FORM_DATA_VALUE)
public ResponseEntity transform(HttpServletRequest request,
@RequestParam(value = FILE, required = false) MultipartFile sourceMultipartFile,
- @RequestParam(value = SOURCE_MIMETYPE, required = false) String sourceMimetype,
- @RequestParam(value = TARGET_MIMETYPE, required = false) String targetMimetype,
+ @RequestParam(value = SOURCE_MIMETYPE, required = true) String sourceMimetype,
+ @RequestParam(value = TARGET_MIMETYPE, required = true) String targetMimetype,
@RequestParam Map requestParameters)
{
return transformHandler.handleHttpRequest(request, sourceMultipartFile, sourceMimetype,
@@ -270,7 +273,7 @@ public class TransformController
}
@ExceptionHandler(TransformException.class)
- public ModelAndView transformExceptionWithMessage(HttpServletResponse response, TransformException e)
+ public ModelAndView handleTransformException(HttpServletResponse response, TransformException e)
throws IOException
{
final String message = e.getMessage();
@@ -278,7 +281,7 @@ public class TransformController
logger.error(message);
long time = LogEntry.setStatusCodeAndMessage(statusCode, message);
- probeTestTransform.recordTransformTime(time);
+ probeTransform.recordTransformTime(time);
response.sendError(statusCode, message);
ModelAndView mav = new ModelAndView();
diff --git a/engines/base/src/main/java/org/alfresco/transform/base/TransformEngine.java b/engines/base/src/main/java/org/alfresco/transform/base/TransformEngine.java
index 24be6395..e9a2cf69 100644
--- a/engines/base/src/main/java/org/alfresco/transform/base/TransformEngine.java
+++ b/engines/base/src/main/java/org/alfresco/transform/base/TransformEngine.java
@@ -26,7 +26,7 @@
*/
package org.alfresco.transform.base;
-import org.alfresco.transform.base.probes.ProbeTestTransform;
+import org.alfresco.transform.base.probes.ProbeTransform;
import org.alfresco.transform.common.TransformConfigResourceReader;
import org.alfresco.transform.config.TransformConfig;
@@ -55,7 +55,7 @@ public interface TransformEngine
TransformConfig getTransformConfig();
/**
- * @return a ProbeTestTransform (will do a quick transform) for k8 liveness and readiness probes.
+ * @return a ProbeTransform (will do a quick transform) for k8 liveness and readiness probes.
*/
- ProbeTestTransform getLivenessAndReadinessProbeTestTransform();
+ ProbeTransform getProbeTransform();
}
diff --git a/engines/base/src/main/java/org/alfresco/transform/base/TransformHandler.java b/engines/base/src/main/java/org/alfresco/transform/base/TransformHandler.java
index 7ac116fb..9dd55e0c 100644
--- a/engines/base/src/main/java/org/alfresco/transform/base/TransformHandler.java
+++ b/engines/base/src/main/java/org/alfresco/transform/base/TransformHandler.java
@@ -30,7 +30,7 @@ import org.alfresco.transform.base.clients.AlfrescoSharedFileStoreClient;
import org.alfresco.transform.base.fs.FileManager;
import org.alfresco.transform.base.logging.LogEntry;
import org.alfresco.transform.base.model.FileRefResponse;
-import org.alfresco.transform.base.probes.ProbeTestTransform;
+import org.alfresco.transform.base.probes.ProbeTransform;
import org.alfresco.transform.base.util.OutputStreamLengthRecorder;
import org.alfresco.transform.client.model.InternalContext;
import org.alfresco.transform.client.model.TransformReply;
@@ -73,7 +73,6 @@ import java.util.concurrent.atomic.AtomicInteger;
import static java.util.stream.Collectors.joining;
import static org.alfresco.transform.base.fs.FileManager.createTargetFile;
-import static org.alfresco.transform.base.fs.FileManager.deleteFile;
import static org.alfresco.transform.base.fs.FileManager.getDirectAccessUrlInputStream;
import static org.alfresco.transform.common.RequestParamMap.DIRECT_ACCESS_URL;
import static org.alfresco.transform.common.RequestParamMap.SOURCE_ENCODING;
@@ -112,7 +111,7 @@ public class TransformHandler
private AtomicInteger httpRequestCount = new AtomicInteger(1);
private TransformEngine transformEngine;
- private ProbeTestTransform probeTestTransform;
+ private ProbeTransform probeTransform;
private Map customTransformersByName = new HashMap<>();
@PostConstruct
@@ -147,7 +146,7 @@ public class TransformHandler
{
if (transformEngine != null)
{
- probeTestTransform = transformEngine.getLivenessAndReadinessProbeTestTransform();
+ probeTransform = transformEngine.getProbeTransform();
}
}
@@ -170,9 +169,9 @@ public class TransformHandler
return transformEngine;
}
- public ProbeTestTransform getProbeTestTransform()
+ public ProbeTransform getProbeTestTransform()
{
- return probeTestTransform;
+ return probeTransform;
}
public ResponseEntity handleHttpRequest(HttpServletRequest request,
@@ -191,7 +190,7 @@ public class TransformHandler
logger.debug("Processing request via HTTP endpoint. Params: sourceMimetype: '{}', targetMimetype: '{}', "
+ "requestParameters: {}", sourceMimetype, targetMimetype, requestParameters);
}
- probeTestTransform.incrementTransformerCount();
+ probeTransform.incrementTransformerCount();
final String directUrl = requestParameters.getOrDefault(DIRECT_ACCESS_URL, "");
InputStream inputStream = new BufferedInputStream(directUrl.isBlank() ?
@@ -222,7 +221,7 @@ public class TransformHandler
LogEntry.setTargetSize(outputStream.getLength());
long time = LogEntry.setStatusCodeAndMessage(OK.value(), "Success");
- probeTestTransform.recordTransformTime(time);
+ probeTransform.recordTransformTime(time);
transformerDebug.popTransform(reference, time);
}
catch (TransformException e)
@@ -252,7 +251,7 @@ public class TransformHandler
try
{
logger.trace("Received {}, timeout {} ms", request, timeout);
- probeTestTransform.incrementTransformerCount();
+ probeTransform.incrementTransformerCount();
checkTransformRequestValid(request, reply);
inputStream = getInputStream(request, reply);
String targetMimetype = request.getTargetMediaType();
@@ -300,7 +299,7 @@ public class TransformHandler
deleteTmpFiles(transformManager);
closeInputStreamWithoutException(inputStream);
- probeTestTransform.recordTransformTime(System.currentTimeMillis()-start);
+ probeTransform.recordTransformTime(System.currentTimeMillis()-start);
transformerDebug.popTransform(reply);
logger.trace("Sending successful {}, timeout {} ms", reply, timeout);
diff --git a/engines/base/src/main/java/org/alfresco/transform/base/TransformRegistryImpl.java b/engines/base/src/main/java/org/alfresco/transform/base/TransformRegistryImpl.java
index cec4b16c..4d6a02e2 100644
--- a/engines/base/src/main/java/org/alfresco/transform/base/TransformRegistryImpl.java
+++ b/engines/base/src/main/java/org/alfresco/transform/base/TransformRegistryImpl.java
@@ -50,7 +50,7 @@ public class TransformRegistryImpl extends AbstractTransformRegistry
@Autowired(required = false)
private List transformEngines;
- @Value("${transform.core.version}")
+ @Autowired
private String coreVersion;
private TransformConfig transformConfigBeforeIncompleteTransformsAreRemoved;
diff --git a/engines/base/src/main/java/org/alfresco/transform/base/config/WebApplicationConfig.java b/engines/base/src/main/java/org/alfresco/transform/base/config/WebApplicationConfig.java
index a39516f7..2781c579 100644
--- a/engines/base/src/main/java/org/alfresco/transform/base/config/WebApplicationConfig.java
+++ b/engines/base/src/main/java/org/alfresco/transform/base/config/WebApplicationConfig.java
@@ -32,6 +32,8 @@ import org.alfresco.transform.base.clients.AlfrescoSharedFileStoreClient;
import org.alfresco.transform.common.TransformerDebug;
import org.alfresco.transform.messages.TransformRequestValidator;
import org.alfresco.transform.registry.TransformServiceRegistry;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@@ -41,6 +43,7 @@ import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_TRANSFORM;
+import static org.alfresco.transform.config.CoreFunction.standardizeCoreVersion;
@Configuration
@ComponentScan(
@@ -48,6 +51,9 @@ import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_TRANSFORM;
excludeFilters = @ComponentScan.Filter(type = FilterType.REGEX, pattern = ".*Test.*"))
public class WebApplicationConfig implements WebMvcConfigurer
{
+ @Value("${transform.core.version}")
+ private String coreVersionString;
+
@Override
public void addInterceptors(InterceptorRegistry registry)
{
@@ -91,4 +97,10 @@ public class WebApplicationConfig implements WebMvcConfigurer
{
return new TransformerDebug().setIsTEngine(true);
}
+
+ @Bean
+ public String coreVersion()
+ {
+ return standardizeCoreVersion(coreVersionString);
+ }
}
diff --git a/engines/base/src/main/java/org/alfresco/transform/base/logging/LogEntry.java b/engines/base/src/main/java/org/alfresco/transform/base/logging/LogEntry.java
index af88f0bf..d998d328 100644
--- a/engines/base/src/main/java/org/alfresco/transform/base/logging/LogEntry.java
+++ b/engines/base/src/main/java/org/alfresco/transform/base/logging/LogEntry.java
@@ -48,7 +48,7 @@ import org.slf4j.LoggerFactory;
public final class LogEntry
{
private static final Logger logger = LoggerFactory.getLogger(LogEntry.class);
- // TODO allow ProbeTestTransform to find out if there are any transforms running longer than the max time.
+ // TODO allow ProbeTransform to find out if there are any transforms running longer than the max time.
private static final AtomicInteger count = new AtomicInteger(0);
private static final Deque log = new ConcurrentLinkedDeque<>();
diff --git a/engines/base/src/main/java/org/alfresco/transform/base/probes/ProbeTestTransform.java b/engines/base/src/main/java/org/alfresco/transform/base/probes/ProbeTransform.java
similarity index 99%
rename from engines/base/src/main/java/org/alfresco/transform/base/probes/ProbeTestTransform.java
rename to engines/base/src/main/java/org/alfresco/transform/base/probes/ProbeTransform.java
index e3226db6..abe82183 100644
--- a/engines/base/src/main/java/org/alfresco/transform/base/probes/ProbeTestTransform.java
+++ b/engines/base/src/main/java/org/alfresco/transform/base/probes/ProbeTransform.java
@@ -81,9 +81,9 @@ import org.springframework.beans.factory.annotation.Autowired;
* livenessTransformPeriodSeconds The number of seconds between test transforms done for live probes
*
*/
-public class ProbeTestTransform
+public class ProbeTransform
{
- private final Logger logger = LoggerFactory.getLogger(ProbeTestTransform.class);
+ private final Logger logger = LoggerFactory.getLogger(ProbeTransform.class);
@Autowired
private TransformServiceRegistry transformRegistry;
@@ -124,7 +124,7 @@ public class ProbeTestTransform
return maxTime;
}
- public ProbeTestTransform(String sourceFilename, String targetFilename,
+ public ProbeTransform(String sourceFilename, String targetFilename,
String sourceMimetype, String targetMimetype, Map transformOptions,
long expectedLength, long plusOrMinus, int livenessPercent, long maxTransforms, long maxTransformSeconds,
long livenessTransformPeriodSeconds)
diff --git a/engines/base/src/test/java/org/alfresco/transform/base/AbstractBaseTest.java b/engines/base/src/test/java/org/alfresco/transform/base/AbstractBaseTest.java
index 1a9e74c2..7ffd082e 100644
--- a/engines/base/src/test/java/org/alfresco/transform/base/AbstractBaseTest.java
+++ b/engines/base/src/test/java/org/alfresco/transform/base/AbstractBaseTest.java
@@ -62,7 +62,7 @@ import java.util.Map;
import java.util.Set;
import java.util.UUID;
-import org.alfresco.transform.base.probes.ProbeTestTransform;
+import org.alfresco.transform.base.probes.ProbeTransform;
import org.alfresco.transform.client.model.InternalContext;
import org.alfresco.transform.client.model.TransformReply;
import org.alfresco.transform.client.model.TransformRequest;
@@ -124,7 +124,7 @@ public abstract class AbstractBaseTest
@SpyBean
protected TransformServiceRegistry transformRegistry;
- @Value("${transform.core.version}")
+ @Autowired
private String coreVersion;
protected String sourceExtension;
@@ -152,9 +152,9 @@ public abstract class AbstractBaseTest
String targetExtension, String sourceMimetype,
boolean readTargetFileBytes) throws IOException;
- protected ProbeTestTransform getProbeTestTransform()
+ protected ProbeTransform getProbeTestTransform()
{
- return controller.probeTestTransform;
+ return controller.probeTransform;
}
protected abstract void updateTransformRequestWithSpecificOptions(TransformRequest transformRequest);
@@ -364,8 +364,8 @@ public abstract class AbstractBaseTest
@Test
public void calculateMaxTime() throws Exception
{
- ProbeTestTransform probeTestTransform = controller.probeTestTransform;
- probeTestTransform.setLivenessPercent(110);
+ ProbeTransform probeTransform = controller.probeTransform;
+ probeTransform.setLivenessPercent(110);
long[][] values = new long[][]{
{5000, 0, Long.MAX_VALUE}, // 1st transform is ignored
@@ -384,9 +384,9 @@ public abstract class AbstractBaseTest
long expectedNormalTime = v[1];
long expectedMaxTime = v[2];
- probeTestTransform.calculateMaxTime(time, true);
- assertEquals(expectedNormalTime, probeTestTransform.getNormalTime());
- assertEquals(expectedMaxTime, probeTestTransform.getMaxTime());
+ probeTransform.calculateMaxTime(time, true);
+ assertEquals(expectedNormalTime, probeTransform.getNormalTime());
+ assertEquals(expectedMaxTime, probeTransform.getMaxTime());
}
}
diff --git a/engines/base/src/test/java/org/alfresco/transform/base/TransformControllerTestWithBasicConfig.java b/engines/base/src/test/java/org/alfresco/transform/base/TransformControllerTestWithBasicConfig.java
deleted file mode 100644
index f1a35d5b..00000000
--- a/engines/base/src/test/java/org/alfresco/transform/base/TransformControllerTestWithBasicConfig.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * #%L
- * Alfresco Transform Core
- * %%
- * Copyright (C) 2005 - 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 .
- * #L%
- */
-package org.alfresco.transform.base;
-
-import org.alfresco.transform.base.components.TestTransformEngineTwoTransformers;
-import org.alfresco.transform.base.components.TestTransformerPdf2Png;
-import org.alfresco.transform.base.components.TestTransformerTxT2Pdf;
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.mock.web.MockMultipartFile;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.MvcResult;
-import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
-
-import java.nio.charset.StandardCharsets;
-
-import static org.alfresco.transform.common.Mimetype.MIMETYPE_IMAGE_PNG;
-import static org.alfresco.transform.common.Mimetype.MIMETYPE_PDF;
-import static org.alfresco.transform.common.Mimetype.MIMETYPE_TEXT_PLAIN;
-import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_TRANSFORM;
-import static org.alfresco.transform.common.RequestParamMap.SOURCE_MIMETYPE;
-import static org.alfresco.transform.common.RequestParamMap.TARGET_MIMETYPE;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
-
-/**
- * Testing base t-engine TransformController functionality.
- */
-@AutoConfigureMockMvc
-@SpringBootTest(classes={org.alfresco.transform.base.Application.class})
-@ContextConfiguration(classes = {
- TestTransformerTxT2Pdf.class,
- TestTransformerPdf2Png.class,
- TestTransformEngineTwoTransformers.class})
-public class TransformControllerTestWithBasicConfig
-{
- @Autowired
- protected MockMvc mockMvc;
-
- private void assertGoodTransform(String originalValue, String expectedValue, String sourceMimetype, String targetMimetype,
- String expectedTargetExtension) throws Exception
- {
- mockMvc.perform(
- MockMvcRequestBuilders.multipart(ENDPOINT_TRANSFORM)
- .file(new MockMultipartFile("file", null, sourceMimetype,
- originalValue.getBytes(StandardCharsets.UTF_8)))
- .param(SOURCE_MIMETYPE, sourceMimetype)
- .param(TARGET_MIMETYPE, targetMimetype))
- .andExpect(request().asyncStarted())
- .andDo(MvcResult::getAsyncResult)
- .andExpect(status().isOk())
- .andExpect(header().string("Content-Disposition",
- "attachment; filename*=UTF-8''transform." + expectedTargetExtension))
- .andExpect(content().string(expectedValue));
- }
-
- @Test
- public void singleStepTransform() throws Exception
- {
- assertGoodTransform("Start", "Start -> TxT2Pdf()",
- MIMETYPE_TEXT_PLAIN, MIMETYPE_PDF, "pdf");
- }
-
- @Test
- public void pipelineTransform() throws Exception
- {
- assertGoodTransform("Start", "Start -> TxT2Pdf() -> Pdf2Png()",
- MIMETYPE_TEXT_PLAIN, MIMETYPE_IMAGE_PNG, "png");
- }
-}
diff --git a/engines/base/src/test/java/org/alfresco/transform/base/TransformControllerWithSingleEngineTest.java b/engines/base/src/test/java/org/alfresco/transform/base/TransformControllerWithSingleEngineTest.java
new file mode 100644
index 00000000..1e7c1fcf
--- /dev/null
+++ b/engines/base/src/test/java/org/alfresco/transform/base/TransformControllerWithSingleEngineTest.java
@@ -0,0 +1,313 @@
+/*
+ * #%L
+ * Alfresco Transform Core
+ * %%
+ * Copyright (C) 2005 - 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 .
+ * #L%
+ */
+package org.alfresco.transform.base;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.Logger;
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.AppenderBase;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.alfresco.transform.base.components.TestTransformEngineTwoTransformers;
+import org.alfresco.transform.base.components.TestTransformerPdf2Png;
+import org.alfresco.transform.base.components.TestTransformerTxT2Pdf;
+import org.alfresco.transform.config.TransformConfig;
+import org.junit.jupiter.api.Test;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.mock.web.MockMultipartFile;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.MvcResult;
+import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
+
+import java.nio.charset.StandardCharsets;
+import java.util.StringJoiner;
+import java.util.stream.Collectors;
+
+import static org.alfresco.transform.common.Mimetype.MIMETYPE_PDF;
+import static org.alfresco.transform.common.Mimetype.MIMETYPE_TEXT_PLAIN;
+import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_ERROR;
+import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_LIVE;
+import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_LOG;
+import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_READY;
+import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_ROOT;
+import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_TRANSFORM;
+import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_TRANSFORM_CONFIG;
+import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_TRANSFORM_CONFIG_LATEST;
+import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_VERSION;
+import static org.alfresco.transform.common.RequestParamMap.FILE;
+import static org.alfresco.transform.common.RequestParamMap.PAGE_REQUEST_PARAM;
+import static org.alfresco.transform.common.RequestParamMap.SOURCE_MIMETYPE;
+import static org.alfresco.transform.common.RequestParamMap.TARGET_MIMETYPE;
+import static org.hamcrest.Matchers.containsString;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+/**
+ * Testing base t-engine TransformController functionality.
+ */
+@AutoConfigureMockMvc
+@SpringBootTest(classes={org.alfresco.transform.base.Application.class})
+@ContextConfiguration(classes = {
+ TestTransformEngineTwoTransformers.class,
+ TestTransformerTxT2Pdf.class,
+ TestTransformerPdf2Png.class})
+public class TransformControllerWithSingleEngineTest
+{
+ @Autowired
+ private MockMvc mockMvc;
+ @Autowired
+ private TransformController transformController;
+ @Autowired
+ protected ObjectMapper objectMapper;
+ @Autowired
+ private String coreVersion;
+
+ @Test
+ public void initEngine() throws Exception
+ {
+ assertEquals(TestTransformEngineTwoTransformers.class.getSimpleName(),
+ transformController.transformEngine.getClass().getSimpleName());
+ assertNotNull(transformController.probeTransform);
+ }
+
+ @Test
+ public void startupLogsIncludeEngineMessages() throws Exception
+ {
+ StringJoiner controllerLogMessages = getLogMessagesFor(TransformController.class);
+
+ transformController.startup();
+
+ assertEquals(
+ "--------------------------------------------------------------------------------------------------------------------------------------------------------------\n"
+ + "Startup TwoTransformers\n"
+ + "Line 2 TwoTransformers\n"
+ + "Line 3\n"
+ + "--------------------------------------------------------------------------------------------------------------------------------------------------------------\n"
+ + "Starting application components... Done",
+ controllerLogMessages.toString());
+ }
+
+ private StringJoiner getLogMessagesFor(Class classBeingLogged)
+ {
+ StringJoiner logMessages = new StringJoiner("\n");
+ Logger logger = (Logger) LoggerFactory.getLogger(classBeingLogged);
+ AppenderBase logAppender = new AppenderBase<>()
+ {
+ @Override
+ protected void append(ILoggingEvent iLoggingEvent)
+ {
+ logMessages.add(iLoggingEvent.getMessage());
+ }
+ };
+ logAppender.setContext((LoggerContext)LoggerFactory.getILoggerFactory());
+ logger.setLevel(Level.DEBUG);
+ logger.addAppender(logAppender);
+ logAppender.start();
+
+ return logMessages;
+ }
+
+ @Test
+ public void versionEndpointIncludesAvailable() throws Exception
+ {
+ mockMvc.perform(MockMvcRequestBuilders.get(ENDPOINT_VERSION))
+ .andExpect(status().isOk())
+ .andExpect(content().string("TwoTransformers "+coreVersion+" available"));
+ }
+
+ @Test
+ public void testRootEndpointReturnsTestPage() throws Exception
+ {
+ mockMvc.perform(MockMvcRequestBuilders.get(ENDPOINT_ROOT))
+ .andExpect(status().isOk())
+ .andExpect(content().string(containsString("TwoTransformers Test Page")));
+ }
+
+ @Test
+ public void testErrorEndpointReturnsErrorPage() throws Exception
+ {
+ mockMvc.perform(MockMvcRequestBuilders.get(ENDPOINT_ERROR))
+ .andExpect(status().isOk())
+ .andExpect(content().string(containsString("TwoTransformers Error Page")));
+ }
+
+ @Test
+ public void testLogEndpointReturnsLogPage() throws Exception
+ {
+ mockMvc.perform(MockMvcRequestBuilders.get(ENDPOINT_LOG))
+ .andExpect(status().isOk())
+ .andExpect(content().string(containsString("TwoTransformers Log Entries")));
+ }
+
+ @Test
+ public void testReadyEndpointReturnsSuccessful() throws Exception
+ {
+ mockMvc.perform(MockMvcRequestBuilders.get(ENDPOINT_READY))
+ .andExpect(status().isOk())
+ .andExpect(content().string(containsString("Success - ")));
+ }
+
+ @Test
+ public void testLiveEndpointReturnsSuccessful() throws Exception
+ {
+ mockMvc.perform(MockMvcRequestBuilders.get(ENDPOINT_LIVE))
+ .andExpect(status().isOk())
+ .andExpect(content().string(containsString("Success - ")));
+ }
+
+ @Test
+ public void testConfigEndpointReturnsOriginalConfigFormat() throws Exception
+ {
+ // Includes Txt2PngViaPdf as Pdf2Jpg might exist in another t-engine
+ // coreValue is not set as this is the default version of config
+ // The transformer's options should not include directAccessUrl as this is the default version of config
+ assertConfig(ENDPOINT_TRANSFORM_CONFIG,
+ "Pdf2Png,null,imageOptions\n"
+ + "TxT2Pdf,null,docOptions\n"
+ + "Txt2JpgViaPdf,null,imageOptions\n"
+ + "Txt2PngViaPdf,null,imageOptions",
+ "docOptions,imageOptions");
+ }
+
+ @Test
+ public void testConfigLatestEndpointReturnsCoreVersionAndDirectAccessUrlOption() throws Exception
+ {
+ assertConfig(ENDPOINT_TRANSFORM_CONFIG_LATEST,
+ "Pdf2Png,"+coreVersion+",directAccessUrl,imageOptions\n"
+ + "TxT2Pdf,"+coreVersion+",directAccessUrl,docOptions\n"
+ + "Txt2JpgViaPdf,null,imageOptions\n"
+ + "Txt2PngViaPdf,"+coreVersion+",directAccessUrl,imageOptions",
+ "directAccessUrl,docOptions,imageOptions");
+ }
+
+ private void assertConfig(String url, String expectedTransformers, String expectedOptions) throws Exception
+ {
+ TransformConfig config = objectMapper.readValue(
+ mockMvc.perform(MockMvcRequestBuilders.get(url))
+ .andExpect(status().isOk())
+ .andReturn()
+ .getResponse()
+ .getContentAsString(), TransformConfig.class);
+
+ // Gets a list of transformerNames,coreVersion,optionNames
+ assertEquals(expectedTransformers,
+ config.getTransformers().stream()
+ .map(t -> t.getTransformerName()+","
+ +t.getCoreVersion()+","
+ +t.getTransformOptions().stream().sorted().collect(Collectors.joining(",")))
+ .sorted()
+ .collect(Collectors.joining("\n")));
+
+ assertEquals(expectedOptions,
+ config.getTransformOptions().keySet().stream()
+ .sorted()
+ .collect(Collectors.joining(",")));
+ }
+
+ @Test
+ public void testTransformEndpoint() throws Exception
+ {
+ mockMvc.perform(
+ MockMvcRequestBuilders.multipart(ENDPOINT_TRANSFORM)
+ .file(new MockMultipartFile("file", null, MIMETYPE_TEXT_PLAIN,
+ "Start".getBytes(StandardCharsets.UTF_8)))
+ .param(SOURCE_MIMETYPE, MIMETYPE_TEXT_PLAIN)
+ .param(TARGET_MIMETYPE, MIMETYPE_PDF)
+ .param(PAGE_REQUEST_PARAM, "1"))
+ .andExpect(request().asyncStarted())
+ .andDo(MvcResult::getAsyncResult)
+ .andExpect(status().isOk())
+ .andExpect(header().string("Content-Disposition",
+ "attachment; filename*=UTF-8''transform." + "pdf"))
+ .andExpect(content().string("Start -> TxT2Pdf(page=1)"));
+ }
+
+ @Test
+ public void testTestTransformEndpointConvertsRequestParameters() throws Exception
+ {
+ // TODO
+ }
+
+ @Test
+ public void testInterceptOfTypeMismatchException() throws Exception
+ {
+ String message =
+ mockMvc.perform(
+ MockMvcRequestBuilders.get(ENDPOINT_TRANSFORM+"?"+FILE+"=NotaMultipartFile"))
+// .param(SOURCE_MIMETYPE, MIMETYPE_TEXT_PLAIN)
+// .param(TARGET_MIMETYPE, MIMETYPE_PDF)
+// .param(PAGE_REQUEST_PARAM, "1")
+ .andExpect(status().isBadRequest())
+ .andReturn()
+ .getResponse()
+ .getContentAsString();
+ assertTrue(message.contains("Request parameter "+PAGE_REQUEST_PARAM+" is of the wrong type"));
+ }
+
+ @Test
+ public void testInterceptOfMissingServletRequestParameterException() throws Exception
+ {
+ mockMvc.perform(
+ MockMvcRequestBuilders.multipart(ENDPOINT_TRANSFORM)
+ .file(new MockMultipartFile("file", null, MIMETYPE_TEXT_PLAIN,
+ "Start".getBytes(StandardCharsets.UTF_8))))
+ .andExpect(status().isBadRequest())
+ .andExpect(status().reason(containsString("Request parameter '"+SOURCE_MIMETYPE+"' is missing")));
+ }
+
+ @Test
+ public void testInterceptOfTransformException() throws Exception
+ {
+ mockMvc.perform(
+ MockMvcRequestBuilders.multipart(ENDPOINT_TRANSFORM)
+ .file(new MockMultipartFile("file", null, MIMETYPE_TEXT_PLAIN,
+ "Start".getBytes(StandardCharsets.UTF_8)))
+ .param(SOURCE_MIMETYPE, MIMETYPE_TEXT_PLAIN)
+ .param(TARGET_MIMETYPE, MIMETYPE_PDF)
+ .param("unknown", "1"))
+// .andExpect(status().isBadRequest())
+ .andExpect(status().reason(containsString("No transforms were able to handle the request")));
+
+
+// mockMvc.perform(
+// MockMvcRequestBuilders.multipart(ENDPOINT_TRANSFORM)
+// .file(new MockMultipartFile("file", null, MIMETYPE_TEXT_PLAIN,
+// "Start".getBytes(StandardCharsets.UTF_8))))
+// .andExpect(status().isBadRequest())
+// .andExpect(status().reason(containsString("Request parameter '"+SOURCE_MIMETYPE+"' is missing")));
+ }
+}
diff --git a/engines/base/src/test/java/org/alfresco/transform/base/components/AbstractTestTransformEngine.java b/engines/base/src/test/java/org/alfresco/transform/base/components/AbstractTestTransformEngine.java
index 12e5223a..cf2f0afd 100644
--- a/engines/base/src/test/java/org/alfresco/transform/base/components/AbstractTestTransformEngine.java
+++ b/engines/base/src/test/java/org/alfresco/transform/base/components/AbstractTestTransformEngine.java
@@ -30,7 +30,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import org.alfresco.transform.base.TransformEngine;
-import org.alfresco.transform.base.probes.ProbeTestTransform;
+import org.alfresco.transform.base.probes.ProbeTransform;
import org.alfresco.transform.config.SupportedSourceAndTarget;
import org.alfresco.transform.config.TransformConfig;
import org.alfresco.transform.config.TransformOptionValue;
@@ -57,46 +57,16 @@ public abstract class AbstractTestTransformEngine implements TransformEngine
@Override public String getStartupMessage()
{
- return "Startup";
+ return "Startup "+getTransformEngineName()+
+ "\nLine 2 "+getTransformEngineName()+
+ "\nLine 3";
}
- @Override public TransformConfig getTransformConfig()
+ @Override public ProbeTransform getProbeTransform()
{
- String docOptions = "docOptions";
- String imageOptions = "imageOptions";
- return TransformConfig.builder()
-// .withTransformOptions(ImmutableMap.of(
-// docOptions, ImmutableSet.of(
-// new TransformOptionValue(false, "page")),
-// imageOptions, ImmutableSet.of(
-// new TransformOptionValue(false, "width"),
-// new TransformOptionValue(false, "height"))))
- .withTransformers(ImmutableList.of(
- Transformer.builder()
- .withTransformerName("TxT2Pdf")
- .withSupportedSourceAndTargetList(ImmutableSet.of(
- SupportedSourceAndTarget.builder()
- .withSourceMediaType(MIMETYPE_TEXT_PLAIN)
- .withTargetMediaType(MIMETYPE_PDF)
- .build()))
-// .withTransformOptions(ImmutableSet.of(docOptions))
- .build(),
- Transformer.builder()
- .withTransformerName("Pdf2Png")
- .withSupportedSourceAndTargetList(ImmutableSet.of(
- SupportedSourceAndTarget.builder()
- .withSourceMediaType(MIMETYPE_PDF)
- .withTargetMediaType(MIMETYPE_IMAGE_PNG)
- .build()))
-// .withTransformOptions(ImmutableSet.of(imageOptions))
- .build()))
- .build();
- }
-
- @Override public ProbeTestTransform getLivenessAndReadinessProbeTestTransform()
- {
- return new ProbeTestTransform("quick.html", "quick.txt",
+ return new ProbeTransform("quick.html", "quick.txt",
MIMETYPE_HTML, MIMETYPE_TEXT_PLAIN, ImmutableMap.of(SOURCE_ENCODING, "UTF-8"),
- 119, 30, 150, 1024, 60 * 2 + 1, 60 * 2);
+ 119, 30, 150, 1024, 60 * 2 + 1,
+ 60 * 2);
}
}
diff --git a/engines/base/src/test/java/org/alfresco/transform/base/components/TestTransformEngineTwoTransformers.java b/engines/base/src/test/java/org/alfresco/transform/base/components/TestTransformEngineTwoTransformers.java
index b1369985..a7afe2da 100644
--- a/engines/base/src/test/java/org/alfresco/transform/base/components/TestTransformEngineTwoTransformers.java
+++ b/engines/base/src/test/java/org/alfresco/transform/base/components/TestTransformEngineTwoTransformers.java
@@ -26,6 +26,78 @@
*/
package org.alfresco.transform.base.components;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
+import org.alfresco.transform.config.SupportedSourceAndTarget;
+import org.alfresco.transform.config.TransformConfig;
+import org.alfresco.transform.config.TransformOptionValue;
+import org.alfresco.transform.config.TransformStep;
+import org.alfresco.transform.config.Transformer;
+
+import java.util.List;
+
+import static org.alfresco.transform.common.Mimetype.MIMETYPE_IMAGE_JPEG;
+import static org.alfresco.transform.common.Mimetype.MIMETYPE_IMAGE_PNG;
+import static org.alfresco.transform.common.Mimetype.MIMETYPE_PDF;
+import static org.alfresco.transform.common.Mimetype.MIMETYPE_TEXT_PLAIN;
+
public class TestTransformEngineTwoTransformers extends AbstractTestTransformEngine
{
+ @Override public TransformConfig getTransformConfig()
+ {
+ String docOptions = "docOptions";
+ String imageOptions = "imageOptions";
+ return TransformConfig.builder()
+ .withTransformOptions(ImmutableMap.of(
+ docOptions, ImmutableSet.of(
+ new TransformOptionValue(false, "page")),
+ imageOptions, ImmutableSet.of(
+ new TransformOptionValue(false, "width"),
+ new TransformOptionValue(false, "height"))))
+ .withTransformers(ImmutableList.of(
+ Transformer.builder()
+ .withTransformerName("TxT2Pdf")
+ .withSupportedSourceAndTargetList(ImmutableSet.of(
+ SupportedSourceAndTarget.builder()
+ .withSourceMediaType(MIMETYPE_TEXT_PLAIN)
+ .withTargetMediaType(MIMETYPE_PDF)
+ .build()))
+ .withTransformOptions(ImmutableSet.of(docOptions))
+ .build(),
+ Transformer.builder()
+ .withTransformerName("Pdf2Png")
+ .withSupportedSourceAndTargetList(ImmutableSet.of(
+ SupportedSourceAndTarget.builder()
+ .withSourceMediaType(MIMETYPE_PDF)
+ .withTargetMediaType(MIMETYPE_IMAGE_PNG)
+ .build()))
+ .withTransformOptions(ImmutableSet.of(imageOptions))
+ .build(),
+ Transformer.builder()
+ .withTransformerName("Txt2PngViaPdf")
+ .withTransformerPipeline(List.of(
+ new TransformStep("TxT2Pdf", MIMETYPE_PDF),
+ new TransformStep("Pdf2Png", null)))
+ .withSupportedSourceAndTargetList(ImmutableSet.of(
+ SupportedSourceAndTarget.builder()
+ .withSourceMediaType(MIMETYPE_TEXT_PLAIN)
+ .withTargetMediaType(MIMETYPE_PDF)
+ .build()))
+ .withTransformOptions(ImmutableSet.of(imageOptions))
+ .build(),
+ Transformer.builder() // Unavailable until Pdf2Jpg is added
+ .withTransformerName("Txt2JpgViaPdf")
+ .withTransformerPipeline(List.of(
+ new TransformStep("TxT2Pdf", MIMETYPE_PDF),
+ new TransformStep("Pdf2Jpg", null)))
+ .withSupportedSourceAndTargetList(ImmutableSet.of(
+ SupportedSourceAndTarget.builder()
+ .withSourceMediaType(MIMETYPE_TEXT_PLAIN)
+ .withTargetMediaType(MIMETYPE_IMAGE_JPEG)
+ .build()))
+ .withTransformOptions(ImmutableSet.of(imageOptions))
+ .build()))
+ .build();
+ }
}
diff --git a/engines/base/src/test/resources/logback.xml b/engines/base/src/test/resources/logback.xml
new file mode 100644
index 00000000..2fc992fc
--- /dev/null
+++ b/engines/base/src/test/resources/logback.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+ %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/engines/imagemagick/src/main/java/org/alfresco/transform/imagemagick/ImageMagickTransformEngine.java b/engines/imagemagick/src/main/java/org/alfresco/transform/imagemagick/ImageMagickTransformEngine.java
index 2dc4013f..94c05200 100644
--- a/engines/imagemagick/src/main/java/org/alfresco/transform/imagemagick/ImageMagickTransformEngine.java
+++ b/engines/imagemagick/src/main/java/org/alfresco/transform/imagemagick/ImageMagickTransformEngine.java
@@ -27,7 +27,7 @@
package org.alfresco.transform.imagemagick;
import org.alfresco.transform.base.TransformEngine;
-import org.alfresco.transform.base.probes.ProbeTestTransform;
+import org.alfresco.transform.base.probes.ProbeTransform;
import org.alfresco.transform.common.TransformConfigResourceReader;
import org.alfresco.transform.config.TransformConfig;
import org.springframework.beans.factory.annotation.Autowired;
@@ -66,9 +66,9 @@ public class ImageMagickTransformEngine implements TransformEngine
}
@Override
- public ProbeTestTransform getLivenessAndReadinessProbeTestTransform()
+ public ProbeTransform getProbeTransform()
{
- return new ProbeTestTransform("quick.jpg", "quick.png",
+ return new ProbeTransform("quick.jpg", "quick.png",
MIMETYPE_IMAGE_JPEG, MIMETYPE_IMAGE_PNG, Collections.emptyMap(),
35593, 1024, 150, 1024, 60 * 15 + 1, 60 * 15);
}
diff --git a/engines/libreoffice/src/main/java/org/alfresco/transform/libreoffice/LibreOfficeTransformEngine.java b/engines/libreoffice/src/main/java/org/alfresco/transform/libreoffice/LibreOfficeTransformEngine.java
index f2f60468..4d22132d 100644
--- a/engines/libreoffice/src/main/java/org/alfresco/transform/libreoffice/LibreOfficeTransformEngine.java
+++ b/engines/libreoffice/src/main/java/org/alfresco/transform/libreoffice/LibreOfficeTransformEngine.java
@@ -27,7 +27,7 @@
package org.alfresco.transform.libreoffice;
import org.alfresco.transform.base.TransformEngine;
-import org.alfresco.transform.base.probes.ProbeTestTransform;
+import org.alfresco.transform.base.probes.ProbeTransform;
import org.alfresco.transform.common.TransformConfigResourceReader;
import org.alfresco.transform.config.TransformConfig;
import org.springframework.beans.factory.annotation.Autowired;
@@ -67,9 +67,9 @@ public class LibreOfficeTransformEngine implements TransformEngine
}
@Override
- public ProbeTestTransform getLivenessAndReadinessProbeTestTransform()
+ public ProbeTransform getProbeTransform()
{
- return new ProbeTestTransform("quick.doc", "quick.pdf",
+ return new ProbeTransform("quick.doc", "quick.pdf",
MIMETYPE_WORD, MIMETYPE_PDF, Collections.emptyMap(),
11817, 1024, 150, 10240, 60 * 30 + 1, 60 * 15 + 20);
}
diff --git a/engines/misc/src/main/java/org/alfresco/transform/misc/MiscTransformEngine.java b/engines/misc/src/main/java/org/alfresco/transform/misc/MiscTransformEngine.java
index c53f02a7..9a379fff 100644
--- a/engines/misc/src/main/java/org/alfresco/transform/misc/MiscTransformEngine.java
+++ b/engines/misc/src/main/java/org/alfresco/transform/misc/MiscTransformEngine.java
@@ -28,7 +28,7 @@ package org.alfresco.transform.misc;
import com.google.common.collect.ImmutableMap;
import org.alfresco.transform.base.TransformEngine;
-import org.alfresco.transform.base.probes.ProbeTestTransform;
+import org.alfresco.transform.base.probes.ProbeTransform;
import org.alfresco.transform.common.TransformConfigResourceReader;
import org.alfresco.transform.config.TransformConfig;
import org.springframework.beans.factory.annotation.Autowired;
@@ -71,9 +71,9 @@ public class MiscTransformEngine implements TransformEngine
}
@Override
- public ProbeTestTransform getLivenessAndReadinessProbeTestTransform()
+ public ProbeTransform getProbeTransform()
{
- return new ProbeTestTransform("quick.html", "quick.txt",
+ return new ProbeTransform("quick.html", "quick.txt",
MIMETYPE_HTML, MIMETYPE_TEXT_PLAIN, transformOptions,
119, 30, 150, 1024, 60 * 2 + 1, 60 * 2);
}
diff --git a/engines/pdfrenderer/src/main/java/org/alfresco/transform/pdfrenderer/PdfRendererTransformEngine.java b/engines/pdfrenderer/src/main/java/org/alfresco/transform/pdfrenderer/PdfRendererTransformEngine.java
index e9dfa85f..9e3b4a43 100644
--- a/engines/pdfrenderer/src/main/java/org/alfresco/transform/pdfrenderer/PdfRendererTransformEngine.java
+++ b/engines/pdfrenderer/src/main/java/org/alfresco/transform/pdfrenderer/PdfRendererTransformEngine.java
@@ -27,7 +27,7 @@
package org.alfresco.transform.pdfrenderer;
import org.alfresco.transform.base.TransformEngine;
-import org.alfresco.transform.base.probes.ProbeTestTransform;
+import org.alfresco.transform.base.probes.ProbeTransform;
import org.alfresco.transform.common.TransformConfigResourceReader;
import org.alfresco.transform.config.TransformConfig;
import org.springframework.beans.factory.annotation.Autowired;
@@ -65,9 +65,9 @@ public class PdfRendererTransformEngine implements TransformEngine
}
@Override
- public ProbeTestTransform getLivenessAndReadinessProbeTestTransform()
+ public ProbeTransform getProbeTransform()
{
- return new ProbeTestTransform("quick.pdf", "quick.png",
+ return new ProbeTransform("quick.pdf", "quick.png",
MIMETYPE_PDF, MIMETYPE_IMAGE_PNG, Collections.emptyMap(),
7455, 1024, 150, 10240, 60 * 20 + 1, 60 * 15 - 15);
}
diff --git a/engines/tika/src/main/java/org/alfresco/transform/tika/TikaTransformEngine.java b/engines/tika/src/main/java/org/alfresco/transform/tika/TikaTransformEngine.java
index 31c7cc68..6c35fb12 100644
--- a/engines/tika/src/main/java/org/alfresco/transform/tika/TikaTransformEngine.java
+++ b/engines/tika/src/main/java/org/alfresco/transform/tika/TikaTransformEngine.java
@@ -27,7 +27,7 @@
package org.alfresco.transform.tika;
import org.alfresco.transform.base.TransformEngine;
-import org.alfresco.transform.base.probes.ProbeTestTransform;
+import org.alfresco.transform.base.probes.ProbeTransform;
import org.alfresco.transform.common.TransformConfigResourceReader;
import org.alfresco.transform.config.TransformConfig;
import org.springframework.beans.factory.annotation.Autowired;
@@ -66,9 +66,9 @@ public class TikaTransformEngine implements TransformEngine
}
@Override
- public ProbeTestTransform getLivenessAndReadinessProbeTestTransform()
+ public ProbeTransform getProbeTransform()
{
- return new ProbeTestTransform("quick.pdf", "quick.txt",
+ return new ProbeTransform("quick.pdf", "quick.txt",
MIMETYPE_PDF, MIMETYPE_TEXT_PLAIN, Collections.emptyMap(),
60, 16, 400, 10240, 60 * 30 + 1, 60 * 15 + 20);
}
diff --git a/engines/tika/src/test/java/org/alfresco/transform/tika/TikaTest.java b/engines/tika/src/test/java/org/alfresco/transform/tika/TikaTest.java
index 525a7472..f7ed4e40 100644
--- a/engines/tika/src/test/java/org/alfresco/transform/tika/TikaTest.java
+++ b/engines/tika/src/test/java/org/alfresco/transform/tika/TikaTest.java
@@ -30,7 +30,7 @@ import org.alfresco.transform.base.AbstractBaseTest;
import org.alfresco.transform.base.executors.RuntimeExec;
import org.alfresco.transform.base.model.FileRefEntity;
import org.alfresco.transform.base.model.FileRefResponse;
-import org.alfresco.transform.base.probes.ProbeTestTransform;
+import org.alfresco.transform.base.probes.ProbeTransform;
import org.alfresco.transform.client.model.TransformReply;
import org.alfresco.transform.client.model.TransformRequest;
import org.apache.poi.ooxml.POIXMLProperties;
@@ -265,9 +265,9 @@ public class TikaTest extends AbstractBaseTest
public void testImmutableEmptyMap()
{
// See ACS-373
- ProbeTestTransform probeTestTransform = getProbeTestTransform();
- ReflectionTestUtils.setField(probeTestTransform, "livenessTransformEnabled", true);
- probeTestTransform.doTransformOrNothing(httpServletRequest, true, controller);
+ ProbeTransform probeTransform = getProbeTestTransform();
+ ReflectionTestUtils.setField(probeTransform, "livenessTransformEnabled", true);
+ probeTransform.doTransformOrNothing(httpServletRequest, true, controller);
}
@Test
diff --git a/model/src/main/java/org/alfresco/transform/common/RequestParamMap.java b/model/src/main/java/org/alfresco/transform/common/RequestParamMap.java
index 07b9d1a1..0f47256f 100644
--- a/model/src/main/java/org/alfresco/transform/common/RequestParamMap.java
+++ b/model/src/main/java/org/alfresco/transform/common/RequestParamMap.java
@@ -80,6 +80,9 @@ public interface RequestParamMap
String ENDPOINT_TEST = "/test";
String ENDPOINT_TRANSFORM_CONFIG = "/transform/config";
String ENDPOINT_TRANSFORM_CONFIG_LATEST = ENDPOINT_TRANSFORM_CONFIG + "?" + CONFIG_VERSION + "=" + CONFIG_VERSION_LATEST;
+ String ENDPOINT_VERSION = "/version";
+ String ENDPOINT_READY = "/ready";
+ String ENDPOINT_LIVE = "/live";
String ENDPOINT_ERROR = "/error";
String ENDPOINT_LOG = "/log";
String ENDPOINT_ROOT = "/";
diff --git a/model/src/main/java/org/alfresco/transform/config/CoreFunction.java b/model/src/main/java/org/alfresco/transform/config/CoreFunction.java
index 400f2375..879caade 100644
--- a/model/src/main/java/org/alfresco/transform/config/CoreFunction.java
+++ b/model/src/main/java/org/alfresco/transform/config/CoreFunction.java
@@ -52,6 +52,11 @@ public enum CoreFunction
return comparableVersion.compareTo(fromVersion) >= 0 && comparableVersion.compareTo(toVersion) <= 0;
}
+ public static String standardizeCoreVersion(String version)
+ {
+ return newComparableVersion(version, NO_VERSION).toString();
+ }
+
CoreFunction(String fromVersion, String toVersion)
{
this.fromVersion = newComparableVersion(fromVersion, NO_VERSION);
diff --git a/model/src/main/java/org/alfresco/transform/config/CoreVersionDecorator.java b/model/src/main/java/org/alfresco/transform/config/CoreVersionDecorator.java
index 6d016447..a1bb5699 100644
--- a/model/src/main/java/org/alfresco/transform/config/CoreVersionDecorator.java
+++ b/model/src/main/java/org/alfresco/transform/config/CoreVersionDecorator.java
@@ -67,14 +67,15 @@ public class CoreVersionDecorator
Set.of(new TransformOptionValue(false, DIRECT_ACCESS_URL));
/**
- * Returns a {@link TransformConfig} that includes or excludes the {@code coreVersion} field.
+ * Returns a new {@link TransformConfig} that includes or excludes the {@code coreVersion} field and
+ * associated elements like directAccessUrl.
*/
public static TransformConfig setOrClearCoreVersion(TransformConfig transformConfig, int configVersion)
{
boolean includeCoreVersion = configVersion >= 2;
Map> transformOptions = new HashMap<>(transformConfig.getTransformOptions());
- return TransformConfig.builder()
+ transformConfig = TransformConfig.builder()
// We may need to create new Transformers as we must not change the original.
.withTransformers(transformConfig.getTransformers().stream()
.map(transformer -> {
@@ -85,7 +86,7 @@ public class CoreVersionDecorator
.withCoreVersion(includeCoreVersion ? transformer.getCoreVersion() : null)
.withTransformOptions(setOrClearCoreTransformOptions(
includeCoreVersion ? transformer.getCoreVersion() : null,
- transformOptions, transformer.getTransformOptions()))
+ transformer.getTransformOptions()))
// Original values
.withTransformerName(transformer.getTransformerName())
.withTransformerPipeline(transformer.getTransformerPipeline())
@@ -104,19 +105,20 @@ public class CoreVersionDecorator
.withOverrideSupported(transformConfig.getOverrideSupported())
.withSupportedDefaults(transformConfig.getSupportedDefaults())
.build();
+ addOrRemoveDirectAccessUrlOption(transformConfig.getTransformOptions(), transformConfig.getTransformers());
+ return transformConfig;
}
public static void setCoreVersionOnSingleStepTransformers(TransformConfig transformConfig, String coreVersion)
{
- Map> transformOptions = transformConfig.getTransformOptions();
List transformers = transformConfig.getTransformers();
transformers.stream()
- .filter(CoreVersionDecorator::isSingleStep)
- .forEach(transformer -> {
+ .filter(CoreVersionDecorator::isSingleStep)
+ .forEach(transformer -> {
transformer.setCoreVersion(coreVersion);
- transformer.setTransformOptions(setOrClearCoreTransformOptions(coreVersion,
- transformOptions, transformer.getTransformOptions()));
+ transformer.setTransformOptions(setOrClearCoreTransformOptions(coreVersion, transformer.getTransformOptions()));
});
+ addOrRemoveDirectAccessUrlOption(transformConfig.getTransformOptions(), transformers);
}
/**
@@ -147,33 +149,43 @@ public class CoreVersionDecorator
String coreVersion = NO_VERSION.equals(minCoreVersion) ? null : minCoreVersion.toString();
transformer.setCoreVersion(coreVersion);
transformer.setTransformOptions(setOrClearCoreTransformOptions(transformer.getCoreVersion(),
- transformOptions, transformer.getTransformOptions()));
+ transformer.getTransformOptions()));
});
+ addOrRemoveDirectAccessUrlOption(transformOptions, transformers);
}
- private static Set setOrClearCoreTransformOptions(String coreVersion, Map> transformOptions, Set transformerTransformOptions)
+ private static Set setOrClearCoreTransformOptions(String coreVersion, Set transformerTransformOptions)
{
- // If we have more options being added in future, consider adding an interface that will be implemented by
+ // If we have more options being added in the future, consider adding an interface that will be implemented by
// different implementations for each coreVersion and then iterate over them here.
transformerTransformOptions = new HashSet<>(transformerTransformOptions);
if (CoreFunction.DIRECT_ACCESS_URL.isSupported(coreVersion))
{
- // Added to the Transform config if any Transformers support it.
- transformOptions.put(DIRECT_ACCESS_URL, DIRECT_ACCESS_URL_TRANSFORM_OPTIONS);
-
// Add DIRECT_ACCESS_URL to a copy of this Transformer's transform options.
transformerTransformOptions.add(DIRECT_ACCESS_URL);
}
else
{
- transformOptions.remove(DIRECT_ACCESS_URL);
transformerTransformOptions.remove(DIRECT_ACCESS_URL);
}
return transformerTransformOptions;
}
+ private static void addOrRemoveDirectAccessUrlOption(Map> transformOptions,
+ List transformers)
+ {
+ if (transformers.stream()
+ .anyMatch(transformer -> CoreFunction.DIRECT_ACCESS_URL.isSupported(transformer.getCoreVersion())))
+ {
+ transformOptions.put(DIRECT_ACCESS_URL, DIRECT_ACCESS_URL_TRANSFORM_OPTIONS);
+ }
+ else
+ {
+ transformOptions.remove(DIRECT_ACCESS_URL);
+ }
+ }
+
private static boolean isSingleStep(Transformer transformer)
{
return (transformer.getTransformerFailover() == null || transformer.getTransformerFailover().isEmpty()) &&
diff --git a/model/src/main/java/org/alfresco/transform/config/TransformConfig.java b/model/src/main/java/org/alfresco/transform/config/TransformConfig.java
index 9b9b275f..89fece65 100644
--- a/model/src/main/java/org/alfresco/transform/config/TransformConfig.java
+++ b/model/src/main/java/org/alfresco/transform/config/TransformConfig.java
@@ -56,7 +56,7 @@ public class TransformConfig
public void setTransformOptions(Map> transformOptions)
{
- this.transformOptions = transformOptions;
+ this.transformOptions = new HashMap<>(transformOptions);
}
public List getTransformers()
@@ -143,7 +143,7 @@ public class TransformConfig
public Builder withTransformOptions(final Map> transformOptions)
{
- transformConfig.transformOptions = transformOptions;
+ transformConfig.setTransformOptions(transformOptions);
return this;
}
diff --git a/model/src/main/java/org/alfresco/transform/config/Transformer.java b/model/src/main/java/org/alfresco/transform/config/Transformer.java
index 6ec32bcd..6777f6c6 100644
--- a/model/src/main/java/org/alfresco/transform/config/Transformer.java
+++ b/model/src/main/java/org/alfresco/transform/config/Transformer.java
@@ -212,7 +212,7 @@ public class Transformer
public Builder withCoreVersion(final String coreVersion)
{
- transformer.coreVersion = coreVersion;
+ transformer.setCoreVersion(coreVersion);
return this;
}
diff --git a/model/src/test/java/org/alfresco/transform/config/CoreVersionDecoratorTest.java b/model/src/test/java/org/alfresco/transform/config/CoreVersionDecoratorTest.java
index 5155b7ad..013ea538 100644
--- a/model/src/test/java/org/alfresco/transform/config/CoreVersionDecoratorTest.java
+++ b/model/src/test/java/org/alfresco/transform/config/CoreVersionDecoratorTest.java
@@ -32,6 +32,7 @@ import java.util.Set;
import static org.alfresco.transform.common.RequestParamMap.CONFIG_VERSION_DEFAULT;
import static org.alfresco.transform.common.RequestParamMap.DIRECT_ACCESS_URL;
+import static org.alfresco.transform.config.CoreFunction.standardizeCoreVersion;
import static org.alfresco.transform.config.CoreVersionDecorator.CONFIG_VERSION_INCLUDES_CORE_VERSION;
import static org.alfresco.transform.config.CoreVersionDecorator.setCoreVersionOnMultiStepTransformers;
import static org.alfresco.transform.config.CoreVersionDecorator.setCoreVersionOnSingleStepTransformers;
@@ -213,4 +214,13 @@ class CoreVersionDecoratorTest
true, true),
setOrClearCoreVersion(transformConfigWithCoreVersion, CONFIG_VERSION_INCLUDES_CORE_VERSION));
}
+
+ @Test
+ void standardizeCoreVersionTest()
+ {
+ assertEquals("2.5.7", standardizeCoreVersion("2.5.7"));
+ assertEquals("2.5.7", standardizeCoreVersion("2.5.7-SNAPSHOT"));
+ assertEquals("2", standardizeCoreVersion("2"));
+ assertEquals("2.5.7", standardizeCoreVersion("2.5.7-A-SNAPSHOT"));
+ }
}
\ No newline at end of file