headers)
{
- putRawValue(KEY_ORIGINATOR, metadata.get(Metadata.AUTHOR), properties);
- putRawValue(KEY_SUBJECT, metadata.get(Metadata.TITLE), properties);
- putRawValue(KEY_DESCRIPTION, metadata.get(Metadata.SUBJECT), properties);
- putRawValue(KEY_SENT_DATE, metadata.get(Metadata.LAST_SAVED), properties);
+ putRawValue(KEY_ORIGINATOR, metadata.get(TikaCoreProperties.CREATOR), properties);
+ putRawValue(KEY_SUBJECT, metadata.get(TikaCoreProperties.TITLE), properties);
+ putRawValue(KEY_DESCRIPTION, metadata.get(TikaCoreProperties.SUBJECT), properties);
+ putRawValue(KEY_SENT_DATE, metadata.get(TikaCoreProperties.MODIFIED), properties);
// Store the TO, but not cc/bcc in the addressee field
- putRawValue(KEY_ADDRESSEE, metadata.get(Metadata.MESSAGE_TO), properties);
+ putRawValue(KEY_ADDRESSEE, metadata.get(Message.MESSAGE_TO), properties);
// Store each of To, CC and BCC in their own fields
- putRawValue(KEY_TO_NAMES, metadata.getValues(Metadata.MESSAGE_TO), properties);
- putRawValue(KEY_CC_NAMES, metadata.getValues(Metadata.MESSAGE_CC), properties);
- putRawValue(KEY_BCC_NAMES, metadata.getValues(Metadata.MESSAGE_BCC), properties);
+ putRawValue(KEY_TO_NAMES, metadata.getValues(Message.MESSAGE_TO), properties);
+ putRawValue(KEY_CC_NAMES, metadata.getValues(Message.MESSAGE_CC), properties);
+ putRawValue(KEY_BCC_NAMES, metadata.getValues(Message.MESSAGE_BCC), properties);
// But store all email addresses (to/cc/bcc) in the addresses field
- putRawValue(KEY_ADDRESSEES, metadata.getValues(Metadata.MESSAGE_RECIPIENT_ADDRESS), properties);
+ putRawValue(KEY_ADDRESSEES, metadata.getValues(Message.MESSAGE_RECIPIENT_ADDRESS), properties);
return properties;
}
diff --git a/alfresco-transform-tika/alfresco-transform-tika/src/main/java/org/alfresco/transformer/metadataExtractors/OfficeMetadataExtractor.java b/alfresco-transform-tika/alfresco-transform-tika/src/main/java/org/alfresco/transformer/metadataExtractors/OfficeMetadataExtractor.java
index dfca577e..7612a386 100644
--- a/alfresco-transform-tika/alfresco-transform-tika/src/main/java/org/alfresco/transformer/metadataExtractors/OfficeMetadataExtractor.java
+++ b/alfresco-transform-tika/alfresco-transform-tika/src/main/java/org/alfresco/transformer/metadataExtractors/OfficeMetadataExtractor.java
@@ -2,7 +2,7 @@
* #%L
* Alfresco Transform Core
* %%
- * Copyright (C) 2005 - 2020 Alfresco Software Limited
+ * Copyright (C) 2005 - 2021 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* -
@@ -27,6 +27,8 @@
package org.alfresco.transformer.metadataExtractors;
import org.apache.tika.metadata.Metadata;
+import org.apache.tika.metadata.Office;
+import org.apache.tika.metadata.TikaCoreProperties;
import org.apache.tika.parser.Parser;
import org.apache.tika.parser.microsoft.OfficeParser;
import org.slf4j.Logger;
@@ -40,7 +42,7 @@ import java.util.Map;
*
* Configuration: (see OfficeMetadataExtractor_metadata_extract.properties and tika_engine_config.json)
*
- * This extracter uses the POI library to extract the following:
+ * This extractor uses the POI library to extract the following:
*
* author: -- cm:author
* title: -- cm:title
@@ -91,23 +93,20 @@ public class OfficeMetadataExtractor extends AbstractTikaMetadataExtractor
return new OfficeParser();
}
- @SuppressWarnings("deprecation")
@Override
protected Map extractSpecific(Metadata metadata,
Map properties, Map headers)
{
- putRawValue(KEY_CREATE_DATETIME, metadata.get(Metadata.CREATION_DATE), properties);
- putRawValue(KEY_LAST_SAVE_DATETIME, metadata.get(Metadata.LAST_SAVED), properties);
- putRawValue(KEY_EDIT_TIME, metadata.get(Metadata.EDIT_TIME), properties);
- putRawValue(KEY_FORMAT, metadata.get(Metadata.FORMAT), properties);
- putRawValue(KEY_KEYWORDS, metadata.get(Metadata.KEYWORDS), properties);
- putRawValue(KEY_LAST_AUTHOR, metadata.get(Metadata.LAST_AUTHOR), properties);
- putRawValue(KEY_LAST_PRINTED, metadata.get(Metadata.LAST_PRINTED), properties);
-// putRawValue(KEY_OS_VERSION, metadata.get(Metadata.OS_VERSION), properties);
-// putRawValue(KEY_THUMBNAIL, metadata.get(Metadata.THUMBNAIL), properties);
- putRawValue(KEY_PAGE_COUNT, metadata.get(Metadata.PAGE_COUNT), properties);
- putRawValue(KEY_PARAGRAPH_COUNT, metadata.get(Metadata.PARAGRAPH_COUNT), properties);
- putRawValue(KEY_WORD_COUNT, metadata.get(Metadata.WORD_COUNT), properties);
+ putRawValue(KEY_CREATE_DATETIME, metadata.get(TikaCoreProperties.CREATED), properties);
+ putRawValue(KEY_LAST_SAVE_DATETIME, metadata.get(TikaCoreProperties.MODIFIED), properties);
+ putRawValue(KEY_EDIT_TIME, metadata.get(TikaCoreProperties.MODIFIED), properties);
+ putRawValue(KEY_FORMAT, metadata.get(TikaCoreProperties.FORMAT), properties);
+ putRawValue(KEY_KEYWORDS, metadata.get(TikaCoreProperties.SUBJECT), properties);
+ putRawValue(KEY_LAST_AUTHOR, metadata.get(TikaCoreProperties.MODIFIER), properties);
+ putRawValue(KEY_LAST_PRINTED, metadata.get(TikaCoreProperties.PRINT_DATE), properties);
+ putRawValue(KEY_PAGE_COUNT, metadata.get(Office.PAGE_COUNT), properties);
+ putRawValue(KEY_PARAGRAPH_COUNT, metadata.get(Office.PARAGRAPH_COUNT), properties);
+ putRawValue(KEY_WORD_COUNT, metadata.get(Office.WORD_COUNT), properties);
return properties;
}
}
diff --git a/alfresco-transform-tika/alfresco-transform-tika/src/main/java/org/alfresco/transformer/metadataExtractors/OpenDocumentMetadataExtractor.java b/alfresco-transform-tika/alfresco-transform-tika/src/main/java/org/alfresco/transformer/metadataExtractors/OpenDocumentMetadataExtractor.java
index 4de536da..8014802b 100644
--- a/alfresco-transform-tika/alfresco-transform-tika/src/main/java/org/alfresco/transformer/metadataExtractors/OpenDocumentMetadataExtractor.java
+++ b/alfresco-transform-tika/alfresco-transform-tika/src/main/java/org/alfresco/transformer/metadataExtractors/OpenDocumentMetadataExtractor.java
@@ -2,7 +2,7 @@
* #%L
* Alfresco Transform Core
* %%
- * Copyright (C) 2005 - 2020 Alfresco Software Limited
+ * Copyright (C) 2005 - 2021 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* -
@@ -26,18 +26,28 @@
*/
package org.alfresco.transformer.metadataExtractors;
+import static org.apache.tika.metadata.DublinCore.NAMESPACE_URI_DC;
+
import org.apache.tika.metadata.Metadata;
+import org.apache.tika.metadata.TikaCoreProperties;
+import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
+import org.apache.tika.parser.odf.OpenDocumentMetaParser;
import org.apache.tika.parser.odf.OpenDocumentParser;
+import org.apache.tika.parser.xml.ElementMetadataHandler;
+import org.apache.tika.sax.TeeContentHandler;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.xml.sax.ContentHandler;
import java.io.Serializable;
import java.util.Date;
+import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.stream.Collectors;
/**
* {@code "application/vnd.oasis.opendocument..."} and {@code "applicationvnd.oasis.opendocument..."} metadata extractor.
@@ -77,6 +87,7 @@ public class OpenDocumentMetadataExtractor extends AbstractTikaMetadataExtractor
private static final String KEY_INITIAL_CREATOR = "initialCreator";
private static final String KEY_KEYWORD = "keyword";
private static final String KEY_LANGUAGE = "language";
+ private static final String KEY_ALFRESCO_CREATOR = "_alfresco:creator";
private static final String CUSTOM_PREFIX = "custom:";
@@ -90,22 +101,33 @@ public class OpenDocumentMetadataExtractor extends AbstractTikaMetadataExtractor
@Override
protected Parser getParser()
{
- return new OpenDocumentParser();
+ OpenDocumentParser parser = new OpenDocumentParser();
+ parser.setMetaParser(new OpenDocumentMetaParser() {
+ @Override
+ protected ContentHandler getContentHandler(ContentHandler ch, Metadata md, ParseContext context)
+ {
+ final ContentHandler superHandler = super.getContentHandler(ch, md, context);
+ final ContentHandler creatorHandler = new ElementMetadataHandler(NAMESPACE_URI_DC, KEY_CREATOR, md, KEY_ALFRESCO_CREATOR);
+ return new TeeContentHandler(superHandler, creatorHandler);
+ }
+ });
+ return parser;
}
- @SuppressWarnings("deprecation")
@Override
protected Map extractSpecific(Metadata metadata,
Map properties, Map headers)
{
- putRawValue(KEY_CREATION_DATE, getDateOrNull(metadata.get(Metadata.CREATION_DATE)), properties);
- putRawValue(KEY_CREATOR, metadata.get(Metadata.CREATOR), properties);
- putRawValue(KEY_DATE, getDateOrNull(metadata.get(Metadata.DATE)), properties);
- putRawValue(KEY_DESCRIPTION, metadata.get(Metadata.DESCRIPTION), properties);
+ putRawValue(KEY_CREATION_DATE, getDateOrNull(metadata.get(TikaCoreProperties.CREATED)), properties);
+ final String creator = getCreator(metadata);
+ putRawValue(KEY_CREATOR, creator, properties);
+ putRawValue(KEY_AUTHOR, creator, properties);
+ putRawValue(KEY_DATE, getDateOrNull(metadata.get(TikaCoreProperties.MODIFIED)), properties);
+ putRawValue(KEY_DESCRIPTION, metadata.get(TikaCoreProperties.DESCRIPTION), properties);
putRawValue(KEY_GENERATOR, metadata.get("generator"), properties);
putRawValue(KEY_INITIAL_CREATOR, metadata.get("initial-creator"), properties);
- putRawValue(KEY_KEYWORD, metadata.get(Metadata.KEYWORDS), properties);
- putRawValue(KEY_LANGUAGE, metadata.get(Metadata.LANGUAGE), properties);
+ putRawValue(KEY_KEYWORD, metadata.get(TikaCoreProperties.SUBJECT), properties);
+ putRawValue(KEY_LANGUAGE, metadata.get(TikaCoreProperties.LANGUAGE), properties);
// Handle user-defined properties dynamically
Map> mapping = super.getExtractMapping();
@@ -120,6 +142,18 @@ public class OpenDocumentMetadataExtractor extends AbstractTikaMetadataExtractor
return properties;
}
+ private String getCreator(Metadata metadata)
+ {
+ final List creators = distinct(metadata.getValues(TikaCoreProperties.CREATOR))
+ .collect(Collectors.toUnmodifiableList());
+ if (creators.size() == 1)
+ {
+ return creators.get(0);
+ }
+
+ return metadata.get(KEY_ALFRESCO_CREATOR);
+ }
+
private Date getDateOrNull(String dateString)
{
if (dateString != null && dateString.length() != 0)
diff --git a/alfresco-transform-tika/alfresco-transform-tika/src/main/java/org/alfresco/transformer/metadataExtractors/TikaAudioMetadataExtractor.java b/alfresco-transform-tika/alfresco-transform-tika/src/main/java/org/alfresco/transformer/metadataExtractors/TikaAudioMetadataExtractor.java
index 1a8a4a84..e7933ef3 100644
--- a/alfresco-transform-tika/alfresco-transform-tika/src/main/java/org/alfresco/transformer/metadataExtractors/TikaAudioMetadataExtractor.java
+++ b/alfresco-transform-tika/alfresco-transform-tika/src/main/java/org/alfresco/transformer/metadataExtractors/TikaAudioMetadataExtractor.java
@@ -2,7 +2,7 @@
* #%L
* Alfresco Transform Core
* %%
- * Copyright (C) 2005 - 2020 Alfresco Software Limited
+ * Copyright (C) 2005 - 2021 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* -
@@ -28,6 +28,7 @@ package org.alfresco.transformer.metadataExtractors;
import org.apache.tika.config.TikaConfig;
import org.apache.tika.metadata.Metadata;
+import org.apache.tika.metadata.TikaCoreProperties;
import org.apache.tika.metadata.XMPDM;
import org.apache.tika.parser.CompositeParser;
import org.apache.tika.parser.Parser;
@@ -148,13 +149,12 @@ public class TikaAudioMetadataExtractor extends AbstractTikaMetadataExtractor
* @param metadata the metadata extracted from the file
* @return the description
*/
- @SuppressWarnings("deprecation")
private String generateDescription(Metadata metadata)
{
StringBuilder result = new StringBuilder();
- if (metadata.get(Metadata.TITLE) != null)
+ if (metadata.get(TikaCoreProperties.TITLE) != null)
{
- result.append(metadata.get(Metadata.TITLE));
+ result.append(metadata.get(TikaCoreProperties.TITLE));
if (metadata.get(XMPDM.ALBUM) != null)
{
result
diff --git a/alfresco-transform-tika/alfresco-transform-tika/src/main/java/org/alfresco/transformer/tika/parsers/ExifToolParser.java b/alfresco-transform-tika/alfresco-transform-tika/src/main/java/org/alfresco/transformer/tika/parsers/ExifToolParser.java
index e43677a4..9e15731e 100644
--- a/alfresco-transform-tika/alfresco-transform-tika/src/main/java/org/alfresco/transformer/tika/parsers/ExifToolParser.java
+++ b/alfresco-transform-tika/alfresco-transform-tika/src/main/java/org/alfresco/transformer/tika/parsers/ExifToolParser.java
@@ -44,9 +44,9 @@ import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.io.output.NullOutputStream;
import org.apache.tika.exception.TikaException;
-import org.apache.tika.io.IOUtils;
-import org.apache.tika.io.NullOutputStream;
import org.apache.tika.io.TemporaryResources;
import org.apache.tika.io.TikaInputStream;
import org.apache.tika.metadata.Metadata;
@@ -57,7 +57,7 @@ import org.apache.tika.parser.external.ExternalParser;
import org.apache.tika.parser.external.ExternalParsersFactory;
import org.apache.tika.parser.image.ImageParser;
import org.apache.tika.parser.image.TiffParser;
-import org.apache.tika.parser.jpeg.JpegParser;
+import org.apache.tika.parser.image.JpegParser;
import org.apache.tika.sax.XHTMLContentHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -263,7 +263,7 @@ public class ExifToolParser extends ExternalParser {
* stream of the given process to the given XHTML content handler.
* The standard output stream is closed once fully processed.
*
- * @param process process
+ * @param stream stream
* @param xhtml XHTML content handler
* @throws SAXException if the XHTML SAX events could not be handled
* @throws IOException if an input error occurred
@@ -315,13 +315,13 @@ public class ExifToolParser extends ExternalParser {
* standard stream of the given process. Potential exceptions
* are ignored, and the stream is closed once fully processed.
*
- * @param process process
+ * @param stream stream
*/
private void ignoreStream(final InputStream stream) {
Thread t = new Thread() {
public void run() {
try {
- IOUtils.copy(stream, new NullOutputStream());
+ IOUtils.copy(stream, NullOutputStream.NULL_OUTPUT_STREAM);
} catch (IOException e) {
} finally {
IOUtils.closeQuietly(stream);
diff --git a/alfresco-transformer-base/pom.xml b/alfresco-transformer-base/pom.xml
index e7ad63cf..1fc41d5c 100644
--- a/alfresco-transformer-base/pom.xml
+++ b/alfresco-transformer-base/pom.xml
@@ -1,15 +1,14 @@
+
4.0.0
org.alfresco
alfresco-transform-core
- 2.5.5-A2-SNAPSHOT
- ../pom.xml
+ 2.5.7-A5-SNAPSHOT
alfresco-transformer-base
- 2.5.5-A2-SNAPSHOT
false
@@ -81,7 +80,6 @@
org.apache.maven.plugins
maven-jar-plugin
- 3.2.0
diff --git a/alfresco-transformer-base/src/main/java/org/alfresco/transformer/AbstractTransformerController.java b/alfresco-transformer-base/src/main/java/org/alfresco/transformer/AbstractTransformerController.java
index d304a87a..a3ffcf3c 100644
--- a/alfresco-transformer-base/src/main/java/org/alfresco/transformer/AbstractTransformerController.java
+++ b/alfresco-transformer-base/src/main/java/org/alfresco/transformer/AbstractTransformerController.java
@@ -33,11 +33,11 @@ import org.alfresco.transform.client.model.TransformRequestValidator;
import org.alfresco.transform.client.model.config.TransformConfig;
import org.alfresco.transform.client.registry.TransformServiceRegistry;
import org.alfresco.transform.exceptions.TransformException;
-import org.alfresco.transform.router.TransformStack;
import org.alfresco.transform.router.TransformerDebug;
import org.alfresco.transformer.clients.AlfrescoSharedFileStoreClient;
import org.alfresco.transformer.logging.LogEntry;
import org.alfresco.transformer.model.FileRefResponse;
+import org.codehaus.plexus.util.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -58,12 +58,20 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
+import java.io.IOException;
+import java.net.URL;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static java.util.stream.Collectors.joining;
+import static org.alfresco.transform.client.model.config.CoreVersionDecorator.setOrClearCoreVersion;
+import static org.alfresco.transform.client.util.RequestParamMap.DIRECT_ACCESS_URL;
+import static org.alfresco.transform.client.util.RequestParamMap.CONFIG_VERSION;
+import static org.alfresco.transform.client.util.RequestParamMap.CONFIG_VERSION_DEFAULT;
+import static org.alfresco.transform.client.util.RequestParamMap.ENDPOINT_TRANSFORM;
+import static org.alfresco.transform.client.util.RequestParamMap.ENDPOINT_TRANSFORM_CONFIG;
import static org.alfresco.transformer.fs.FileManager.TempFileProvider.createTempFile;
import static org.alfresco.transformer.fs.FileManager.buildFile;
import static org.alfresco.transformer.fs.FileManager.createAttachment;
@@ -126,7 +134,7 @@ public abstract class AbstractTransformerController implements TransformControll
// Request parameters that are not part of transform options
public static final List NON_TRANSFORM_OPTION_REQUEST_PARAMETERS = Arrays.asList(SOURCE_EXTENSION,
- TARGET_EXTENSION, TARGET_MIMETYPE, SOURCE_MIMETYPE, TEST_DELAY, TRANSFORM_NAME_PROPERTY);
+ TARGET_EXTENSION, TARGET_MIMETYPE, SOURCE_MIMETYPE, TEST_DELAY, TRANSFORM_NAME_PROPERTY, DIRECT_ACCESS_URL);
@Autowired
private AlfrescoSharedFileStoreClient alfrescoSharedFileStoreClient;
@@ -140,27 +148,28 @@ public abstract class AbstractTransformerController implements TransformControll
@Autowired
private TransformerDebug transformerDebug;
- @GetMapping(value = "/transform/config")
- public ResponseEntity info()
+ @GetMapping(value = ENDPOINT_TRANSFORM_CONFIG)
+ public ResponseEntity info(
+ @RequestParam(value = CONFIG_VERSION, defaultValue = CONFIG_VERSION_DEFAULT) int configVersion)
{
- logger.info("GET Transform Config.");
- final TransformConfig transformConfig =
- ((TransformRegistryImpl) transformRegistry).getTransformConfig();
+ logger.info("GET Transform Config version: " + configVersion);
+ TransformConfig transformConfig = ((TransformRegistryImpl) transformRegistry).getTransformConfig();
+ transformConfig = setOrClearCoreVersion(transformConfig, configVersion);
return new ResponseEntity<>(transformConfig, OK);
}
- @PostMapping(value = "/transform", consumes = MULTIPART_FORM_DATA_VALUE)
+ @PostMapping(value = ENDPOINT_TRANSFORM, consumes = MULTIPART_FORM_DATA_VALUE)
public ResponseEntity transform(HttpServletRequest request,
- @RequestParam(FILE) MultipartFile sourceMultipartFile,
+ @RequestParam(value = FILE, required = false) MultipartFile sourceMultipartFile,
@RequestParam(TARGET_EXTENSION) String targetExtension,
@RequestParam(value = SOURCE_MIMETYPE, required = false) String sourceMimetype,
@RequestParam(value = TARGET_MIMETYPE, required = false) String targetMimetype,
@RequestParam Map requestParameters,
- @RequestParam (value = TEST_DELAY, required = false) Long testDelay,
+ @RequestParam(value = TEST_DELAY, required = false) Long testDelay,
// The TRANSFORM_NAME_PROPERTY param allows ACS legacy transformers to specify which transform to use,
// It can be removed once legacy transformers are removed from ACS.
- @RequestParam (value = TRANSFORM_NAME_PROPERTY, required = false) String requestTransformName)
+ @RequestParam(value = TRANSFORM_NAME_PROPERTY, required = false) String requestTransformName)
{
if (logger.isDebugEnabled())
{
@@ -168,10 +177,27 @@ public abstract class AbstractTransformerController implements TransformControll
+ "targetExtension: '{}', requestParameters: {}", sourceMimetype, targetMimetype, targetExtension, requestParameters);
}
- final String targetFilename = createTargetFileName(
- sourceMultipartFile.getOriginalFilename(), targetExtension);
+ final String directUrl = requestParameters.getOrDefault(DIRECT_ACCESS_URL, "");
+
+ File sourceFile;
+ String sourceFilename;
+ if (directUrl.isBlank())
+ {
+ if (sourceMultipartFile == null)
+ {
+ throw new TransformException(BAD_REQUEST.value(), "Required request part 'file' is not present");
+ }
+ sourceFile = createSourceFile(request, sourceMultipartFile);
+ sourceFilename = sourceMultipartFile.getOriginalFilename();
+ }
+ else
+ {
+ sourceFile = getSourceFileFromDirectUrl(directUrl);
+ sourceFilename = sourceFile.getName();
+ }
+
+ final String targetFilename = createTargetFileName(sourceFilename, targetExtension);
getProbeTestTransform().incrementTransformerCount();
- final File sourceFile = createSourceFile(request, sourceMultipartFile);
final File targetFile = createTargetFile(request, targetFilename);
Map transformOptions = getTransformOptions(requestParameters);
@@ -186,6 +212,25 @@ public abstract class AbstractTransformerController implements TransformControll
return body;
}
+ private File getSourceFileFromDirectUrl(String directUrl)
+ {
+ File sourceFile = createTempFile("tmp", ".tmp");
+ try
+ {
+ FileUtils.copyURLToFile(new URL(directUrl), sourceFile);
+ }
+ catch (IllegalArgumentException e)
+ {
+ throw new TransformException(BAD_REQUEST.value(), "Direct Access Url is invalid.", e);
+ }
+ catch (IOException e)
+ {
+ throw new TransformException(BAD_REQUEST.value(), "Direct Access Url not found.", e);
+ }
+
+ return sourceFile;
+ }
+
protected Map getTransformOptions(Map requestParameters)
{
Map transformOptions = new HashMap<>(requestParameters);
@@ -204,7 +249,7 @@ public abstract class AbstractTransformerController implements TransformControll
* @param timeout Transformation timeout
* @return A transformation reply
*/
- @PostMapping(value = "/transform", produces = APPLICATION_JSON_VALUE)
+ @PostMapping(value = ENDPOINT_TRANSFORM, produces = APPLICATION_JSON_VALUE)
@ResponseBody
public ResponseEntity transform(@RequestBody TransformRequest request,
@RequestParam(value = "timeout", required = false) Long timeout)
@@ -240,7 +285,15 @@ public abstract class AbstractTransformerController implements TransformControll
File sourceFile;
try
{
- sourceFile = loadSourceFile(request.getSourceReference(), request.getSourceExtension());
+ final String directUrl = request.getTransformRequestOptions().getOrDefault(DIRECT_ACCESS_URL, "");
+ if (directUrl.isBlank())
+ {
+ sourceFile = loadSourceFile(request.getSourceReference(), request.getSourceExtension());
+ }
+ else
+ {
+ sourceFile = getSourceFileFromDirectUrl(directUrl);
+ }
}
catch (TransformException e)
{
@@ -280,7 +333,7 @@ public abstract class AbstractTransformerController implements TransformControll
{
String targetMimetype = request.getTargetMediaType();
String sourceMimetype = request.getSourceMediaType();
- Map transformOptions = request.getTransformRequestOptions();
+ Map transformOptions = getTransformOptions(request.getTransformRequestOptions());
transformerDebug.logOptions(request);
String transformName = getTransformerName(sourceFile, sourceMimetype, targetMimetype, transformOptions);
transformImpl(transformName, sourceMimetype, targetMimetype, transformOptions, sourceFile, targetFile);
diff --git a/alfresco-transformer-base/src/main/java/org/alfresco/transformer/TransformRegistryImpl.java b/alfresco-transformer-base/src/main/java/org/alfresco/transformer/TransformRegistryImpl.java
index 25c620c0..f2289c37 100644
--- a/alfresco-transformer-base/src/main/java/org/alfresco/transformer/TransformRegistryImpl.java
+++ b/alfresco-transformer-base/src/main/java/org/alfresco/transformer/TransformRegistryImpl.java
@@ -26,6 +26,7 @@
package org.alfresco.transformer;
import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.alfresco.transform.client.model.config.CoreVersionDecorator.setCoreVersionOnSingleStepTransformers;
import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR;
import java.io.IOException;
@@ -61,6 +62,9 @@ public class TransformRegistryImpl extends AbstractTransformRegistry
@Value("${transform.core.config.location:classpath:engine_config.json}")
private String locationFromProperty;
+ @Value("${transform.core.version}")
+ private String coreVersion;
+
private Resource engineConfig;
@PostConstruct
@@ -82,7 +86,9 @@ public class TransformRegistryImpl extends AbstractTransformRegistry
{
try (Reader reader = new InputStreamReader(engineConfig.getInputStream(), UTF_8))
{
- return jsonObjectMapper.readValue(reader, TransformConfig.class);
+ TransformConfig transformConfig = jsonObjectMapper.readValue(reader, TransformConfig.class);
+ setCoreVersionOnSingleStepTransformers(transformConfig, coreVersion);
+ return transformConfig;
}
catch (IOException e)
{
diff --git a/alfresco-transformer-base/src/main/java/org/alfresco/transformer/config/WebApplicationConfig.java b/alfresco-transformer-base/src/main/java/org/alfresco/transformer/config/WebApplicationConfig.java
index 013f850e..0efd8d23 100644
--- a/alfresco-transformer-base/src/main/java/org/alfresco/transformer/config/WebApplicationConfig.java
+++ b/alfresco-transformer-base/src/main/java/org/alfresco/transformer/config/WebApplicationConfig.java
@@ -38,16 +38,17 @@ import org.springframework.web.client.RestTemplate;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import static org.alfresco.transform.client.util.RequestParamMap.ENDPOINT_TRANSFORM;
+
@Configuration
public class WebApplicationConfig implements WebMvcConfigurer
{
-
@Override
public void addInterceptors(InterceptorRegistry registry)
{
registry
.addInterceptor(transformInterceptor())
- .addPathPatterns("/transform", "/live", "/ready");
+ .addPathPatterns(ENDPOINT_TRANSFORM, "/live", "/ready");
}
@Bean
diff --git a/alfresco-transformer-base/src/main/java/org/alfresco/transformer/util/RequestParamMap.java b/alfresco-transformer-base/src/main/java/org/alfresco/transformer/util/RequestParamMap.java
index 228afcf5..c6d98a03 100644
--- a/alfresco-transformer-base/src/main/java/org/alfresco/transformer/util/RequestParamMap.java
+++ b/alfresco-transformer-base/src/main/java/org/alfresco/transformer/util/RequestParamMap.java
@@ -2,7 +2,7 @@
* #%L
* Alfresco Transform Core
* %%
- * Copyright (C) 2005 - 2020 Alfresco Software Limited
+ * Copyright (C) 2005 - 2022 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* -
@@ -26,7 +26,11 @@
*/
package org.alfresco.transformer.util;
-public interface RequestParamMap
+/**
+ * Extends the list of transform options with historic request parameters or 'extra' parameters used in testing
+ * or communication in the all-in-one transformer.
+ */
+public interface RequestParamMap extends org.alfresco.transform.client.util.RequestParamMap
{
// This property can be sent by acs repository's legacy transformers to force a transform,
// instead of letting this T-Engine determine it based on the request parameters.
@@ -35,43 +39,14 @@ public interface RequestParamMap
// See ATS-731.
@Deprecated
String TRANSFORM_NAME_PROPERTY = "transformName";
-
String TRANSFORM_NAME_PARAMETER = "alfresco.transform-name-parameter";
- String FILE = "file";
- String SOURCE_ENCODING = "sourceEncoding";
+ String FILE = "file";
String SOURCE_EXTENSION = "sourceExtension";
String SOURCE_MIMETYPE = "sourceMimetype";
String TARGET_EXTENSION = "targetExtension";
String TARGET_MIMETYPE = "targetMimetype";
- String TARGET_ENCODING = "targetEncoding";
String TEST_DELAY = "testDelay";
- String PAGE_REQUEST_PARAM = "page";
- String WIDTH_REQUEST_PARAM = "width";
- String HEIGHT_REQUEST_PARAM = "height";
- String ALLOW_PDF_ENLARGEMENT = "allowPdfEnlargement";
- String MAINTAIN_PDF_ASPECT_RATIO = "maintainPdfAspectRatio";
- String START_PAGE = "startPage";
- String END_PAGE = "endPage";
- String ALPHA_REMOVE = "alphaRemove";
- String AUTO_ORIENT = "autoOrient";
- String CROP_GRAVITY = "cropGravity";
- String CROP_WIDTH = "cropWidth";
- String CROP_HEIGHT = "cropHeight";
- String CROP_PERCENTAGE = "cropPercentage";
- String CROP_X_OFFSET = "cropXOffset";
- String CROP_Y_OFFSET = "cropYOffset";
- String THUMBNAIL = "thumbnail";
- String RESIZE_WIDTH = "resizeWidth";
- String RESIZE_HEIGHT = "resizeHeight";
- String RESIZE_PERCENTAGE = "resizePercentage";
- String ALLOW_ENLARGEMENT = "allowEnlargement";
- String MAINTAIN_ASPECT_RATIO = "maintainAspectRatio";
- String COMMAND_OPTIONS = "commandOptions";
- String TIMEOUT = "timeout";
- String INCLUDE_CONTENTS = "includeContents";
- String NOT_EXTRACT_BOOKMARKS_TEXT = "notExtractBookmarksText";
- String PAGE_LIMIT = "pageLimit";
// TODO PoC for FFmpeg - effectively target options (note: if we need specific source options, may need extra set)
String TIME_OFFSET = "timeOffset";
@@ -79,4 +54,5 @@ public interface RequestParamMap
String FRAMES_NUM = "framesNum";
String FRAME_WIDTH = "frameWidth";
String FRAME_HEIGHT = "frameHeight";
+
}
diff --git a/alfresco-transformer-base/src/main/resources/templates/log.html b/alfresco-transformer-base/src/main/resources/templates/log.html
index 856c5dd1..ee973306 100644
--- a/alfresco-transformer-base/src/main/resources/templates/log.html
+++ b/alfresco-transformer-base/src/main/resources/templates/log.html
@@ -36,6 +36,7 @@