MNT-24883 sourceFilename added in transform options / Bumped ATS to 4.1.8-A.2 (#3379)

This commit is contained in:
bsayan2
2025-06-23 10:53:24 +05:30
committed by GitHub
parent 6be0c3031f
commit 11fd7ca1dd
11 changed files with 67 additions and 22 deletions

View File

@@ -51,8 +51,8 @@
<dependency.alfresco-server-root.version>7.0.2</dependency.alfresco-server-root.version>
<dependency.activiti-engine.version>5.23.0</dependency.activiti-engine.version>
<dependency.activiti.version>5.23.0</dependency.activiti.version>
<dependency.alfresco-transform-core.version>5.1.8-A.1</dependency.alfresco-transform-core.version>
<dependency.alfresco-transform-service.version>4.1.8-A.1</dependency.alfresco-transform-service.version>
<dependency.alfresco-transform-core.version>5.1.8-A.2</dependency.alfresco-transform-core.version>
<dependency.alfresco-transform-service.version>4.1.8-A.2</dependency.alfresco-transform-service.version>
<dependency.alfresco-greenmail.version>7.1</dependency.alfresco-greenmail.version>
<dependency.acs-event-model.version>1.0.2</dependency.acs-event-model.version>

View File

@@ -2,7 +2,7 @@
* #%L
* Alfresco Repository
* %%
* Copyright (C) 2019 - 2022 Alfresco Software Limited
* Copyright (C) 2019 - 2025 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of
@@ -39,6 +39,7 @@ import org.alfresco.service.cmr.repository.ContentReader;
import org.alfresco.service.cmr.repository.ContentWriter;
import org.alfresco.service.cmr.repository.MimetypeService;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.transform.config.TransformOption;
import org.alfresco.transform.config.TransformOptionGroup;
import org.alfresco.transform.config.TransformOptionValue;
@@ -52,6 +53,7 @@ public abstract class AbstractLocalTransform implements LocalTransform
protected final String name;
protected final MimetypeService mimetypeService;
protected final NodeService nodeService;
protected final TransformerDebug transformerDebug;
protected final Set<String> transformsTransformOptionNames = new HashSet<>();
@@ -65,7 +67,8 @@ public abstract class AbstractLocalTransform implements LocalTransform
MimetypeService mimetypeService, boolean strictMimeTypeCheck,
Map<String, Set<String>> strictMimetypeExceptions, boolean retryTransformOnDifferentMimeType,
Set<TransformOption> transformsTransformOptions,
LocalTransformServiceRegistry localTransformServiceRegistry)
LocalTransformServiceRegistry localTransformServiceRegistry,
NodeService nodeService)
{
this.name = name;
this.transformerDebug = transformerDebug;
@@ -74,6 +77,7 @@ public abstract class AbstractLocalTransform implements LocalTransform
this.strictMimetypeExceptions = strictMimetypeExceptions;
this.retryTransformOnDifferentMimeType = retryTransformOnDifferentMimeType;
this.localTransformServiceRegistry = localTransformServiceRegistry;
this.nodeService = nodeService;
addOptionNames(transformsTransformOptionNames, transformsTransformOptions);
}

View File

@@ -2,7 +2,7 @@
* #%L
* Alfresco Repository
* %%
* Copyright (C) 2019 - 2022 Alfresco Software Limited
* Copyright (C) 2019 - 2025 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of
@@ -37,6 +37,7 @@ import org.alfresco.service.cmr.repository.ContentReader;
import org.alfresco.service.cmr.repository.ContentWriter;
import org.alfresco.service.cmr.repository.MimetypeService;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.transform.config.TransformOption;
import org.alfresco.util.TempFileProvider;
@@ -54,10 +55,10 @@ public class LocalFailoverTransform extends AbstractLocalTransform
Map<String, Set<String>> strictMimetypeExceptions,
boolean retryTransformOnDifferentMimeType,
Set<TransformOption> transformsTransformOptions,
LocalTransformServiceRegistry localTransformServiceRegistry)
LocalTransformServiceRegistry localTransformServiceRegistry, NodeService nodeService)
{
super(name, transformerDebug, mimetypeService, strictMimeTypeCheck, strictMimetypeExceptions,
retryTransformOnDifferentMimeType, transformsTransformOptions, localTransformServiceRegistry);
retryTransformOnDifferentMimeType, transformsTransformOptions, localTransformServiceRegistry, nodeService);
}
@Override

View File

@@ -2,7 +2,7 @@
* #%L
* Alfresco Repository
* %%
* Copyright (C) 2005 - 2022 Alfresco Software Limited
* Copyright (C) 2005 - 2025 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of
@@ -41,6 +41,7 @@ import org.alfresco.service.cmr.repository.ContentReader;
import org.alfresco.service.cmr.repository.ContentWriter;
import org.alfresco.service.cmr.repository.MimetypeService;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.transform.config.SupportedSourceAndTarget;
import org.alfresco.transform.config.TransformOption;
import org.alfresco.transform.config.Transformer;
@@ -63,10 +64,10 @@ public class LocalPassThroughTransform extends AbstractLocalTransform
Map<String, Set<String>> strictMimetypeExceptions,
boolean retryTransformOnDifferentMimeType,
Set<TransformOption> transformsTransformOptions,
LocalTransformServiceRegistry localTransformServiceRegistry)
LocalTransformServiceRegistry localTransformServiceRegistry, NodeService nodeService)
{
super(name, transformerDebug, mimetypeService, strictMimeTypeCheck, strictMimetypeExceptions,
retryTransformOnDifferentMimeType, transformsTransformOptions, localTransformServiceRegistry);
retryTransformOnDifferentMimeType, transformsTransformOptions, localTransformServiceRegistry, nodeService);
}
public static Transformer getConfig(List<String> mimetypes)

View File

@@ -2,7 +2,7 @@
* #%L
* Alfresco Repository
* %%
* Copyright (C) 2005 - 2022 Alfresco Software Limited
* Copyright (C) 2005 - 2025 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of
@@ -38,6 +38,7 @@ import org.alfresco.service.cmr.repository.ContentReader;
import org.alfresco.service.cmr.repository.ContentWriter;
import org.alfresco.service.cmr.repository.MimetypeService;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.transform.config.TransformOption;
import org.alfresco.util.TempFileProvider;
@@ -61,10 +62,10 @@ public class LocalPipelineTransform extends AbstractLocalTransform
Map<String, Set<String>> strictMimetypeExceptions,
boolean retryTransformOnDifferentMimeType,
Set<TransformOption> transformsTransformOptions,
LocalTransformServiceRegistry localTransformServiceRegistry)
LocalTransformServiceRegistry localTransformServiceRegistry, NodeService nodeService)
{
super(name, transformerDebug, mimetypeService, strictMimeTypeCheck, strictMimetypeExceptions,
retryTransformOnDifferentMimeType, transformsTransformOptions, localTransformServiceRegistry);
retryTransformOnDifferentMimeType, transformsTransformOptions, localTransformServiceRegistry, nodeService);
}
@Override

View File

@@ -2,7 +2,7 @@
* #%L
* Alfresco Repository
* %%
* Copyright (C) 2005 - 2022 Alfresco Software Limited
* Copyright (C) 2005 - 2025 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of
@@ -26,19 +26,24 @@
package org.alfresco.repo.content.transform;
import static org.alfresco.repo.rendition2.RenditionDefinition2.SOURCE_ENCODING;
import static org.alfresco.repo.rendition2.RenditionDefinition2.SOURCE_FILENAME;
import static org.alfresco.repo.rendition2.RenditionDefinition2.SOURCE_NODE_REF;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.apache.commons.lang3.StringUtils;
import org.alfresco.httpclient.HttpClientConfig;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.content.metadata.AsynchronousExtractor;
import org.alfresco.repo.rendition2.RenditionDefinition2;
import org.alfresco.service.cmr.repository.ContentReader;
import org.alfresco.service.cmr.repository.ContentWriter;
import org.alfresco.service.cmr.repository.MimetypeService;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.transform.config.TransformOption;
import org.alfresco.util.Pair;
@@ -60,10 +65,11 @@ public class LocalTransformImpl extends AbstractLocalTransform
Set<TransformOption> transformsTransformOptions,
LocalTransformServiceRegistry localTransformServiceRegistry, String baseUrl,
HttpClientConfig httpClientConfig,
NodeService nodeService,
int startupRetryPeriodSeconds)
{
super(name, transformerDebug, mimetypeService, strictMimeTypeCheck, strictMimetypeExceptions,
retryTransformOnDifferentMimeType, transformsTransformOptions, localTransformServiceRegistry);
retryTransformOnDifferentMimeType, transformsTransformOptions, localTransformServiceRegistry, nodeService);
remoteTransformerClient = new RemoteTransformerClient(name, baseUrl, httpClientConfig);
remoteTransformerClient.setStartupRetryPeriodSeconds(startupRetryPeriodSeconds);
@@ -155,6 +161,17 @@ public class LocalTransformImpl extends AbstractLocalTransform
transformOptions.put(SOURCE_NODE_REF, sourceNodeRef.toString());
}
String filename = null;
if (sourceNodeRef != null && nodeService.exists(sourceNodeRef))
{
filename = (String) nodeService.getProperty(sourceNodeRef, ContentModel.PROP_NAME);
}
if (StringUtils.isNotEmpty(filename))
{
transformOptions.put(SOURCE_FILENAME, filename);
}
// Build an array of option names and values and extract the timeout.
long timeoutMs = 0;
int nonOptions = transformOptions.containsKey(RenditionDefinition2.TIMEOUT) ? 1 : 0;

View File

@@ -2,7 +2,7 @@
* #%L
* Alfresco Repository
* %%
* Copyright (C) 2019 - 2023 Alfresco Software Limited
* Copyright (C) 2019 - 2025 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of
@@ -43,6 +43,7 @@ import org.springframework.beans.factory.InitializingBean;
import org.alfresco.httpclient.HttpClientConfig;
import org.alfresco.service.cmr.repository.MimetypeService;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.transform.config.CoreFunction;
import org.alfresco.transform.config.TransformOption;
import org.alfresco.transform.config.TransformOptionGroup;
@@ -71,6 +72,7 @@ public class LocalTransformServiceRegistry extends TransformServiceRegistryImpl
private Map<String, LocalTransform> localTransforms = new HashMap<>();
}
private NodeService nodeService;
private String pipelineConfigDir;
private Properties properties;
private MimetypeService mimetypeService;
@@ -85,6 +87,11 @@ public class LocalTransformServiceRegistry extends TransformServiceRegistryImpl
return httpClientConfig;
}
public void setNodeService(NodeService nodeService)
{
this.nodeService = nodeService;
}
public void setHttpClientConfig(HttpClientConfig httpClientConfig)
{
this.httpClientConfig = httpClientConfig;
@@ -139,6 +146,7 @@ public class LocalTransformServiceRegistry extends TransformServiceRegistryImpl
PropertyCheck.mandatory(this, "mimetypeService", mimetypeService);
PropertyCheck.mandatory(this, "properties", properties);
PropertyCheck.mandatory(this, "transformerDebug", transformerDebug);
PropertyCheck.mandatory(this, "nodeService", nodeService);
strictMimetypeExceptions = getStrictMimetypeExceptions();
super.afterPropertiesSet();
}
@@ -193,14 +201,14 @@ public class LocalTransformServiceRegistry extends TransformServiceRegistryImpl
{
localTransform = new LocalPassThroughTransform(name, transformerDebug, mimetypeService,
strictMimeTypeCheck, strictMimetypeExceptions, retryTransformOnDifferentMimeType,
transformsTransformOptions, this);
transformsTransformOptions, this, nodeService);
}
else if (!isPipeline && !isFailover)
{
int startupRetryPeriodSeconds = getStartupRetryPeriodSeconds(name);
localTransform = new LocalTransformImpl(name, transformerDebug, mimetypeService,
strictMimeTypeCheck, strictMimetypeExceptions, retryTransformOnDifferentMimeType,
transformsTransformOptions, this, baseUrl, httpClientConfig,
transformsTransformOptions, this, baseUrl, httpClientConfig, nodeService,
startupRetryPeriodSeconds);
}
else if (isPipeline)
@@ -215,7 +223,7 @@ public class LocalTransformServiceRegistry extends TransformServiceRegistryImpl
localTransform = new LocalPipelineTransform(name, transformerDebug, mimetypeService,
strictMimeTypeCheck, strictMimetypeExceptions, retryTransformOnDifferentMimeType,
transformsTransformOptions, this);
transformsTransformOptions, this, nodeService);
for (int i = 0; i < transformerCount; i++)
{
TransformStep intermediateTransformerStep = pipeline.get(i);
@@ -264,7 +272,7 @@ public class LocalTransformServiceRegistry extends TransformServiceRegistryImpl
localTransform = new LocalFailoverTransform(name, transformerDebug, mimetypeService,
strictMimeTypeCheck, strictMimetypeExceptions, retryTransformOnDifferentMimeType,
transformsTransformOptions, this);
transformsTransformOptions, this, nodeService);
for (String transformerStepName : failover)
{

View File

@@ -2,7 +2,7 @@
* #%L
* Alfresco Repository
* %%
* Copyright (C) 2005 - 2018 Alfresco Software Limited
* Copyright (C) 2005 - 2025 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of
@@ -35,6 +35,7 @@ import org.alfresco.api.AlfrescoPublicApi;
* @author adavis
*/
@AlfrescoPublicApi
@SuppressWarnings({"PMD.UnnecessaryFullyQualifiedName", "PMD.UnnecessaryModifier"})
public interface RenditionDefinition2
{
public static final String TIMEOUT = "timeout";
@@ -106,6 +107,11 @@ public interface RenditionDefinition2
*/
public static final String SOURCE_NODE_REF = "sourceNodeRef";
/**
* The Source File Name is automatically added to the Transform Options if not specified and the transformer knows about it.
*/
public static final String SOURCE_FILENAME = "sourceFilename";
/**
* The encoding of a Target Node is automatically added to the Transform Options if not specified and the transformer knows about it.
*/

View File

@@ -128,6 +128,7 @@
<property name="retryTransformOnDifferentMimeType" value="${content.transformer.retryOn.different.mimetype}"/>
<property name="shutdownIndicator" ref="shutdownIndicator" />
<property name="httpClientConfig" ref="httpClientConfigTransform" />
<property name="nodeService" ref="NodeService" />
</bean>
<bean id="localTransformServiceRegistryJsonObjectMapper" class="com.fasterxml.jackson.databind.ObjectMapper" />

View File

@@ -2,7 +2,7 @@
* #%L
* Alfresco Repository
* %%
* Copyright (C) 2005 - 2023 Alfresco Software Limited
* Copyright (C) 2005 - 2025 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of
@@ -64,6 +64,7 @@ import org.alfresco.repo.content.transform.LocalPipelineTransform;
import org.alfresco.repo.content.transform.LocalTransformImpl;
import org.alfresco.repo.content.transform.LocalTransformServiceRegistry;
import org.alfresco.repo.content.transform.TransformerDebug;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.transform.config.SupportedSourceAndTarget;
import org.alfresco.transform.config.TransformConfig;
import org.alfresco.transform.config.TransformOption;
@@ -205,6 +206,9 @@ public class LocalTransformServiceRegistryConfigTest extends TransformRegistryMo
@Mock
private MimetypeMap mimetypeMap;
@Mock
private NodeService nodeService;
private Map<String, List<String>> imagemagickSupportedTransformation;
private Map<String, List<String>> tikaSupportedTransformation;
private Map<String, List<String>> pdfRendererSupportedTransformation;
@@ -232,6 +236,7 @@ public class LocalTransformServiceRegistryConfigTest extends TransformRegistryMo
registry.setProperties(properties);
registry.setTransformerDebug(transformerDebug);
registry.setMimetypeService(mimetypeMap);
registry.setNodeService(nodeService);
registry.setPipelineConfigDir("");
registry.setCronExpression(null); // just read it once
registry.afterPropertiesSet();

View File

@@ -28,6 +28,7 @@
<property name="strictMimeTypeCheck" value="${transformer.strict.mimetype.check}"/>
<property name="retryTransformOnDifferentMimeType" value="false"/>
<property name="httpClientConfig" ref="httpClientConfigTransform" />
<property name="nodeService" ref="NodeService" />
</bean>
</beans>