Merge commit '2fd8361a783f117592b55bbca4fc7273adf1db49' into ATS-812_PoC_FFmpeg_skeleton

* commit '2fd8361a783f117592b55bbca4fc7273adf1db49': (25 commits)
  [maven-release-plugin][skip ci] prepare for next development iteration
  [maven-release-plugin][skip ci] prepare release 2.5.5-A1
  [trigger release] 2.5.5-A1 (#511)
  [trigger release] 2.5.5-A1
  Bump dependency.jackson.version from 2.13.0 to 2.13.1
  Bump dependency.cxf.version from 3.4.5 to 3.5.0
  Revert "Bump dependency.tika.version from 2.1.0 to 2.2.1"
  Bump dependency.tika.version from 2.1.0 to 2.2.1
  ACS-2002 Enhance T-Router debug (#507)
  Bump license-maven-plugin from 2.0.0 to 2.0.1.alfresco-1 (#481)
  Bump bcmail-jdk15on from 1.69 to 1.70 (#492)
  Bump bcprov-jdk15on from 1.69 to 1.70 (#491)
  Bump spring-boot-starter-parent from 2.6.0 to 2.6.2 (#504)
  ACS-2352: Added Veracode agent-based scanning integration.
  Bump joda-time from 2.2 to 2.10.13
  ATS-969 Tika upgrade 1.x -> 2.x (#493)
  ATS-968 Migrate to CentOS 7 base images (#490)
  ACS-1983 CentOS 7 base image for the ImageMagic transformer (#489)
  Update travis linux dist to Focal (#478)
  Bump spring-boot-starter-parent from 2.5.6 to 2.6.0
  ...

# Conflicts:
#	alfresco-transform-core-aio/alfresco-transform-core-aio-boot/pom.xml
#	alfresco-transform-core-aio/alfresco-transform-core-aio/pom.xml
#	alfresco-transform-imagemagick/alfresco-transform-imagemagick-boot/pom.xml
#	alfresco-transform-imagemagick/alfresco-transform-imagemagick/pom.xml
#	alfresco-transform-libreoffice/alfresco-transform-libreoffice-boot/pom.xml
#	alfresco-transform-libreoffice/alfresco-transform-libreoffice/pom.xml
#	alfresco-transform-misc/alfresco-transform-misc-boot/pom.xml
#	alfresco-transform-misc/alfresco-transform-misc/pom.xml
#	alfresco-transform-pdf-renderer/alfresco-transform-pdf-renderer-boot/pom.xml
#	alfresco-transform-pdf-renderer/alfresco-transform-pdf-renderer/pom.xml
#	alfresco-transform-tika/alfresco-transform-tika-boot/pom.xml
#	alfresco-transform-tika/alfresco-transform-tika/pom.xml
#	alfresco-transformer-base/pom.xml
#	pom.xml
This commit is contained in:
Jan Vonka
2022-01-06 11:10:21 +00:00
41 changed files with 521 additions and 354 deletions

View File

@@ -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,12 +26,15 @@
*/
package org.alfresco.transformer;
import org.alfresco.transform.client.model.InternalContext;
import org.alfresco.transform.client.model.TransformReply;
import org.alfresco.transform.client.model.TransformRequest;
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;
@@ -134,6 +137,9 @@ public abstract class AbstractTransformerController implements TransformControll
@Autowired
private TransformServiceRegistry transformRegistry;
@Autowired
private TransformerDebug transformerDebug;
@GetMapping(value = "/transform/config")
public ResponseEntity<TransformConfig> info()
{
@@ -203,16 +209,18 @@ public abstract class AbstractTransformerController implements TransformControll
public ResponseEntity<TransformReply> transform(@RequestBody TransformRequest request,
@RequestParam(value = "timeout", required = false) Long timeout)
{
logger.info("Received {}, timeout {} ms", request, timeout);
logger.trace("Received {}, timeout {} ms", request, timeout);
final TransformReply reply = new TransformReply();
reply.setInternalContext(request.getInternalContext());
reply.setRequestId(request.getRequestId());
reply.setSourceReference(request.getSourceReference());
reply.setSchema(request.getSchema());
reply.setClientData(request.getClientData());
final Errors errors = validateTransformRequest(request);
validateInternalContext(request, errors);
initialiseContext(request);
reply.setInternalContext(request.getInternalContext());
if (!errors.getAllErrors().isEmpty())
{
reply.setStatus(BAD_REQUEST.value());
@@ -222,9 +230,11 @@ public abstract class AbstractTransformerController implements TransformControll
.map(Object::toString)
.collect(joining(", ")));
logger.error("Invalid request, sending {}", reply);
transformerDebug.logFailure(reply);
logger.trace("Invalid request, sending {}", reply);
return new ResponseEntity<>(reply, HttpStatus.valueOf(reply.getStatus()));
}
transformerDebug.pushTransform(request);
// Load the source file
File sourceFile;
@@ -237,7 +247,8 @@ public abstract class AbstractTransformerController implements TransformControll
reply.setStatus(e.getStatusCode());
reply.setErrorDetails(messageWithCause("Failed at reading the source file", e));
logger.error("Failed to load source file (TransformException), sending " + reply);
transformerDebug.logFailure(reply);
logger.trace("Failed to load source file (TransformException), sending " + reply);
return new ResponseEntity<>(reply, HttpStatus.valueOf(reply.getStatus()));
}
catch (HttpClientErrorException e)
@@ -245,8 +256,8 @@ public abstract class AbstractTransformerController implements TransformControll
reply.setStatus(e.getStatusCode().value());
reply.setErrorDetails(messageWithCause("Failed at reading the source file", e));
logger.error("Failed to load source file (HttpClientErrorException), sending " +
reply, e);
transformerDebug.logFailure(reply);
logger.trace("Failed to load source file (HttpClientErrorException), sending " + reply, e);
return new ResponseEntity<>(reply, HttpStatus.valueOf(reply.getStatus()));
}
catch (Exception e)
@@ -254,7 +265,8 @@ public abstract class AbstractTransformerController implements TransformControll
reply.setStatus(INTERNAL_SERVER_ERROR.value());
reply.setErrorDetails(messageWithCause("Failed at reading the source file", e));
logger.error("Failed to load source file (Exception), sending " + reply, e);
transformerDebug.logFailure(reply);
logger.trace("Failed to load source file (Exception), sending " + reply, e);
return new ResponseEntity<>(reply, HttpStatus.valueOf(reply.getStatus()));
}
@@ -266,10 +278,10 @@ public abstract class AbstractTransformerController implements TransformControll
// Run the transformation
try
{
String targetMimetype = request.getTargetMediaType();
String sourceMimetype = request.getSourceMediaType();
Map<String, String> transformOptions = request.getTransformRequestOptions();
transformerDebug.logOptions(request);
String transformName = getTransformerName(sourceFile, sourceMimetype, targetMimetype, transformOptions);
transformImpl(transformName, sourceMimetype, targetMimetype, transformOptions, sourceFile, targetFile);
}
@@ -278,7 +290,8 @@ public abstract class AbstractTransformerController implements TransformControll
reply.setStatus(e.getStatusCode());
reply.setErrorDetails(messageWithCause("Failed at processing transformation", e));
logger.error("Failed to perform transform (TransformException), sending " + reply, e);
transformerDebug.logFailure(reply);
logger.trace("Failed to perform transform (TransformException), sending " + reply, e);
return new ResponseEntity<>(reply, HttpStatus.valueOf(reply.getStatus()));
}
catch (Exception e)
@@ -286,7 +299,8 @@ public abstract class AbstractTransformerController implements TransformControll
reply.setStatus(INTERNAL_SERVER_ERROR.value());
reply.setErrorDetails(messageWithCause("Failed at processing transformation", e));
logger.error("Failed to perform transform (Exception), sending " + reply, e);
transformerDebug.logFailure(reply);
logger.trace("Failed to perform transform (Exception), sending " + reply, e);
return new ResponseEntity<>(reply, HttpStatus.valueOf(reply.getStatus()));
}
@@ -301,7 +315,8 @@ public abstract class AbstractTransformerController implements TransformControll
reply.setStatus(e.getStatusCode());
reply.setErrorDetails(messageWithCause("Failed at writing the transformed file", e));
logger.error("Failed to save target file (TransformException), sending " + reply, e);
transformerDebug.logFailure(reply);
logger.trace("Failed to save target file (TransformException), sending " + reply, e);
return new ResponseEntity<>(reply, HttpStatus.valueOf(reply.getStatus()));
}
catch (HttpClientErrorException e)
@@ -309,8 +324,8 @@ public abstract class AbstractTransformerController implements TransformControll
reply.setStatus(e.getStatusCode().value());
reply.setErrorDetails(messageWithCause("Failed at writing the transformed file. ", e));
logger.error("Failed to save target file (HttpClientErrorException), sending " + reply,
e);
transformerDebug.logFailure(reply);
logger.trace("Failed to save target file (HttpClientErrorException), sending " + reply, e);
return new ResponseEntity<>(reply, HttpStatus.valueOf(reply.getStatus()));
}
catch (Exception e)
@@ -318,7 +333,8 @@ public abstract class AbstractTransformerController implements TransformControll
reply.setStatus(INTERNAL_SERVER_ERROR.value());
reply.setErrorDetails(messageWithCause("Failed at writing the transformed file. ", e));
logger.error("Failed to save target file (Exception), sending " + reply, e);
transformerDebug.logFailure(reply);
logger.trace("Failed to save target file (Exception), sending " + reply, e);
return new ResponseEntity<>(reply, HttpStatus.valueOf(reply.getStatus()));
}
@@ -343,7 +359,8 @@ public abstract class AbstractTransformerController implements TransformControll
reply.setTargetReference(targetRef.getEntry().getFileRef());
reply.setStatus(CREATED.value());
logger.info("Sending successful {}, timeout {} ms", reply, timeout);
transformerDebug.popTransform(reply);
logger.trace("Sending successful {}, timeout {} ms", reply, timeout);
return new ResponseEntity<>(reply, HttpStatus.valueOf(reply.getStatus()));
}
@@ -354,6 +371,21 @@ public abstract class AbstractTransformerController implements TransformControll
return errors;
}
private void validateInternalContext(TransformRequest request, Errors errors)
{
String errorMessage = InternalContext.checkForBasicErrors(request.getInternalContext(), "T-Request");
if (errorMessage != null)
{
errors.rejectValue("internalContext", null, errorMessage);
}
}
private void initialiseContext(TransformRequest request)
{
// If needed initialise the context enough to allow logging to take place without NPE checks
request.setInternalContext(InternalContext.initialise(request.getInternalContext()));
}
/**
* Loads the file with the specified sourceReference from Alfresco Shared File Store
*
@@ -422,7 +454,7 @@ public abstract class AbstractTransformerController implements TransformControll
}
else if (logger.isInfoEnabled())
{
logger.info("Using transform name provided in the request: " + requestTransformName);
logger.trace("Using transform name provided in the request: " + requestTransformName);
}
return transformName;
}

View File

@@ -2,7 +2,7 @@
* #%L
* Alfresco Transform Core
* %%
* Copyright (C) 2005 - 2019 Alfresco Software Limited
* Copyright (C) 2005 - 2022 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* -
@@ -106,7 +106,7 @@ public class QueueTransformService
return;
}
logger.info("New T-Request from queue with correlationId: {}", correlationId);
logger.trace("New T-Request from queue with correlationId: {}", correlationId);
Optional<TransformRequest> transformRequest;
try

View File

@@ -2,7 +2,7 @@
* #%L
* Alfresco Transform Core
* %%
* Copyright (C) 2005 - 2019 Alfresco Software Limited
* Copyright (C) 2005 - 2022 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* -
@@ -28,6 +28,7 @@ package org.alfresco.transformer.config;
import org.alfresco.transform.client.model.TransformRequestValidator;
import org.alfresco.transform.client.registry.TransformServiceRegistry;
import org.alfresco.transform.router.TransformerDebug;
import org.alfresco.transformer.TransformInterceptor;
import org.alfresco.transformer.TransformRegistryImpl;
import org.alfresco.transformer.clients.AlfrescoSharedFileStoreClient;
@@ -78,4 +79,10 @@ public class WebApplicationConfig implements WebMvcConfigurer
{
return new TransformRegistryImpl();
}
@Bean
public TransformerDebug transformerDebug()
{
return new TransformerDebug().setIsTEngine(true);
}
}

View File

@@ -66,7 +66,7 @@ public class TransformReplySender
m.setJMSCorrelationID(correlationId);
return m;
});
logger.info("Sent: {} - with correlation ID {}", reply, correlationId);
logger.trace("Sent: {} - with correlation ID {}", reply, correlationId);
}
catch (Exception e)
{

View File

@@ -31,6 +31,7 @@ logging:
org.alfresco.transformer.ImageMagickController: debug
org.alfresco.transformer.TikaController: debug
org.alfresco.transformer.MiscellaneousTransformersController: debug
org.alfresco.transform.router.TransformerDebug: debug
fileStoreUrl: ${FILE_STORE_URL:http://localhost:8099/alfresco/api/-default-/private/sfs/versions/1/file}

View File

@@ -2,7 +2,7 @@
* #%L
* Alfresco Transform Core
* %%
* Copyright (C) 2005 - 2021 Alfresco Software Limited
* Copyright (C) 2005 - 2022 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* -
@@ -48,10 +48,12 @@ import java.io.IOException;
import java.net.URL;
import java.nio.channels.FileChannel;
import java.nio.file.Files;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.alfresco.transform.client.model.InternalContext;
import org.alfresco.transform.client.model.TransformReply;
import org.alfresco.transform.client.model.TransformRequest;
import org.alfresco.transform.client.model.config.SupportedSourceAndTarget;
@@ -61,6 +63,7 @@ import org.alfresco.transform.client.model.config.TransformOptionGroup;
import org.alfresco.transform.client.model.config.TransformOptionValue;
import org.alfresco.transform.client.model.config.Transformer;
import org.alfresco.transform.client.registry.TransformServiceRegistry;
import org.alfresco.transform.router.TransformStack;
import org.alfresco.transformer.clients.AlfrescoSharedFileStoreClient;
import org.alfresco.transformer.probes.ProbeTestTransform;
import org.junit.jupiter.api.Test;
@@ -104,6 +107,7 @@ public abstract class AbstractTransformerControllerTest
protected String targetExtension;
protected String sourceMimetype;
protected String targetMimetype;
protected HashMap<String, String> options = new HashMap<>();
protected MockMultipartFile sourceFile;
protected String expectedOptions;
@@ -220,6 +224,30 @@ public abstract class AbstractTransformerControllerTest
return builder;
}
protected TransformRequest createTransformRequest(String sourceFileRef, File sourceFile)
{
TransformRequest transformRequest = new TransformRequest();
transformRequest.setRequestId("1");
transformRequest.setSchema(1);
transformRequest.setClientData("Alfresco Digital Business Platform");
transformRequest.setTransformRequestOptions(options);
transformRequest.setSourceReference(sourceFileRef);
transformRequest.setSourceExtension(sourceExtension);
transformRequest.setSourceMediaType(sourceMimetype);
transformRequest.setSourceSize(sourceFile.length());
transformRequest.setTargetExtension(targetExtension);
transformRequest.setTargetMediaType(targetMimetype);
transformRequest.setInternalContext(InternalContext.initialise(null));
transformRequest.getInternalContext().getMultiStep().setInitialRequestId("123");
transformRequest.getInternalContext().getMultiStep().setInitialSourceMediaType(sourceMimetype);
TransformStack.setInitialTransformRequestOptions(transformRequest.getInternalContext(), options);
TransformStack.setInitialSourceReference(transformRequest.getInternalContext(), sourceFileRef);
TransformStack.addTransformLevel(transformRequest.getInternalContext(),
TransformStack.levelBuilder(TransformStack.PIPELINE_FLAG)
.withStep("transformerName", sourceMimetype, targetMimetype));
return transformRequest;
}
@Test
public void simpleTransformTest() throws Exception
{