ATS-671: Split engines into fat & skinny modules (ATS-674) (#192)

Each transform engine project has been separated into 2 modules so that an executable and non-executable jar can be created. 
Modules have been renamed such that *docker* has been removed from the artifactIds and project names.

Co-authored-by: Erik Knizat <erik.knizat@alfresco.com>
Co-authored-by: David Edwards <david.edwards@alfresco.com>
This commit is contained in:
eknizat 2020-03-27 13:45:15 +00:00 committed by GitHub
parent 46b2e6df5b
commit 3bed6930bf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
215 changed files with 539 additions and 157 deletions

4
.gitignore vendored
View File

@ -10,6 +10,9 @@
*.iml
*.iws
# vscode
.vscode
# Mac
.DS_Store
@ -26,6 +29,7 @@ target
# Package Files #
*.jar
!quick.jar
*.war
*.ear

View File

@ -16,7 +16,7 @@ else
echo "Downloading LibreOffice distribution..."
curl -s -S ${LIBREOFFICE_RPM_URL} -o "${HOME}/artifacts/libreoffice-dist-${LIBREOFFICE_VERSION}-linux.gz"
fi
cp "${HOME}/artifacts/libreoffice-dist-${LIBREOFFICE_VERSION}-linux.gz" alfresco-docker-libreoffice/
cp "${HOME}/artifacts/libreoffice-dist-${LIBREOFFICE_VERSION}-linux.gz" alfresco-transform-libreoffice/alfresco-transform-libreoffice-boot
popd

View File

@ -13,11 +13,16 @@ java -jar vosp-api-wrappers-java-$VERACODE_WRAPPER_VERSION.jar -vid $VERACODE_AP
${RUN_IN_SANDBOX} -createprofile false \
-filepath \
alfresco-transformer-base/target/alfresco-transformer-base-*.jar \
alfresco-docker-alfresco-pdf-renderer/target/alfresco-docker-alfresco-pdf-renderer-*.jar \
alfresco-docker-imagemagick/target/alfresco-docker-imagemagick-*.jar \
alfresco-docker-libreoffice/target/alfresco-docker-libreoffice-*.jar \
alfresco-docker-tika/target/alfresco-docker-tika-*.jar \
alfresco-docker-transform-misc/target/alfresco-docker-transform-misc-*.jar \
alfresco-transform-pdf-renderer/alfresco-transform-pdf-renderer/target/alfresco-transform-pdf-renderer-*.jar \
alfresco-transform-pdf-renderer/alfresco-transform-pdf-renderer-boot/target/alfresco-transform-pdf-renderer-*.jar \
alfresco-transform-imagemagick/alfresco-transform-imagemagick/target/alfresco-transform-imagemagick-*.jar \
alfresco-transform-imagemagick/alfresco-transform-imagemagick-boot/target/alfresco-transform-imagemagick-boot-*.jar \
alfresco-transform-libreoffice/alfresco-transform-libreoffice/target/alfresco-transform-libreoffice-*.jar \
alfresco-transform-libreoffice/alfresco-transform-libreoffice-boot/target/alfresco-transform-libreoffice-boot-*.jar \
alfresco-transform-tika/alfresco-transform-tika/target/alfresco-transform-tika-*.jar \
alfresco-transform-tika/alfresco-transform-tika-boot/target/alfresco-transform-tika-boot-*.jar \
alfresco-transform-misc/alfresco-transform-misc/target/alfresco-transform-misc-*.jar \
alfresco-transform-misc/alfresco-transform-misc-boot/target/alfresco-transform-misc-boot*.jar \
-version "$TRAVIS_JOB_ID - $TRAVIS_JOB_NUMBER" -scantimeout 3600
popd

View File

@ -14,12 +14,12 @@ ENV JAVA_OPTS=""
# Set default user information
ARG GROUPNAME=Alfresco
ARG GROUPID=1000
ARG USERNAME=imagemagick
ARG IMAGEUSERNAME=imagemagick
ARG USERID=33002
COPY target/alfresco-docker-imagemagick-${env.project_version}.jar /usr/bin
COPY target/${env.project_artifactId}-${env.project_version}.jar /usr/bin
RUN ln /usr/bin/alfresco-docker-imagemagick-${env.project_version}.jar /usr/bin/alfresco-docker-imagemagick.jar && \
RUN ln /usr/bin/${env.project_artifactId}-${env.project_version}.jar /usr/bin/${env.project_artifactId}.jar && \
curl -s -S $IMAGEMAGICK_RPM_URL -o imagemagick-distribution-linux.rpm && \
curl -s -S $IMAGEMAGICK_LIB_RPM_URL -o imagemagick-distribution-libs-linux.rpm && \
curl -s -S $IMAGEMAGICK_LICENSE_FILE -o ImageMagick-license.txt && \
@ -32,11 +32,11 @@ ADD target/generated-resources/licenses.xml /licenses/
ADD target/generated-sources/license/THIRD-PARTY.txt /licenses/
RUN groupadd -g ${GROUPID} ${GROUPNAME} && \
useradd -u ${USERID} -G ${GROUPNAME} ${USERNAME} && \
chgrp -R ${GROUPNAME} /usr/bin/alfresco-docker-imagemagick.jar
useradd -u ${USERID} -G ${GROUPNAME} ${IMAGEUSERNAME} && \
chgrp -R ${GROUPNAME} /usr/bin/${env.project_artifactId}.jar
EXPOSE 8090
USER ${USERNAME}
USER ${IMAGEUSERNAME}
ENTRYPOINT java $JAVA_OPTS -jar /usr/bin/alfresco-docker-imagemagick.jar
ENTRYPOINT java $JAVA_OPTS -jar /usr/bin/${env.project_artifactId}.jar

View File

@ -1,19 +1,20 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>alfresco-docker-imagemagick</artifactId>
<name>Alfresco Docker ImageMagick</name>
<artifactId>alfresco-transform-imagemagick-boot</artifactId>
<name>Alfresco ImageMagick Transformer SpringBoot</name>
<packaging>jar</packaging>
<parent>
<groupId>org.alfresco</groupId>
<artifactId>alfresco-transform-core</artifactId>
<version>2.1.2-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
<version>2.2.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<properties>
<image.name>alfresco/alfresco-imagemagick</image.name>
<image.registry>quay.io</image.registry>
<env.project_artifactId>${project.artifactId}</env.project_artifactId>
</properties>
<dependencies>
@ -30,6 +31,11 @@
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.alfresco</groupId>
<artifactId>alfresco-transform-imagemagick</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>

View File

@ -79,8 +79,7 @@ public class ImageMagickController extends AbstractTransformerController
{
private static final Logger logger = LoggerFactory.getLogger(ImageMagickController.class);
@Autowired
private ImageMagickCommandExecutor commandExecutor;
private ImageMagickCommandExecutor commandExecutor = new ImageMagickCommandExecutor();
@Override
public String getTransformerName()

View File

@ -94,8 +94,7 @@ public class ImageMagickControllerTest extends AbstractTransformerControllerTest
@Mock
private RuntimeExec mockCheckCommand;
@SpyBean
private ImageMagickCommandExecutor commandExecutor;
private ImageMagickCommandExecutor commandExecutor = new ImageMagickCommandExecutor();
@SpyBean
private ImageMagickController controller;
@ -105,6 +104,7 @@ public class ImageMagickControllerTest extends AbstractTransformerControllerTest
{
ReflectionTestUtils.setField(commandExecutor, "transformCommand", mockTransformCommand);
ReflectionTestUtils.setField(commandExecutor, "checkCommand", mockCheckCommand);
ReflectionTestUtils.setField(controller, "commandExecutor", commandExecutor);
mockTransformCommand("jpg", "png", "image/jpg", true);
}

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>alfresco-transform-imagemagick</artifactId>
<name>Alfresco ImageMagick Transformer</name>
<packaging>jar</packaging>
<parent>
<artifactId>alfresco-transform-core</artifactId>
<groupId>org.alfresco</groupId>
<version>2.2.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<dependencies>
<dependency>
<groupId>org.alfresco</groupId>
<artifactId>alfresco-transformer-base</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>license-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

View File

@ -29,13 +29,10 @@ package org.alfresco.transformer.executors;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Component;
/**
* CommandExecutor implementation for running ImageMagick transformations. It runs the
* transformation logic as a separate Shell process.
*/
@Component
public class ImageMagickCommandExecutor extends AbstractCommandExecutor
{
private static final String ROOT = "/usr/lib64/ImageMagick-7.0.7";

View File

@ -13,12 +13,12 @@ ENV JAVA_OPTS=""
# Set default user information
ARG GROUPNAME=Alfresco
ARG GROUPID=1000
ARG USERNAME=libreoffice
ARG LIBREUSERNAME=libreoffice
ARG USERID=33003
COPY target/alfresco-docker-libreoffice-${env.project_version}.jar libreoffice-dist-*-linux.gz /
COPY target/${env.project_artifactId}-${env.project_version}.jar libreoffice-dist-*-linux.gz /
RUN ln /alfresco-docker-libreoffice-${env.project_version}.jar /usr/bin/alfresco-docker-libreoffice.jar && \
RUN ln /${env.project_artifactId}-${env.project_version}.jar /usr/bin/${env.project_artifactId}.jar && \
yum install -y cairo cups-libs libSM && \
test -f libreoffice-dist-${LIBREOFFICE_VERSION}-linux.gz && \
ln -s libreoffice-dist-${LIBREOFFICE_VERSION}-linux.gz libreoffice-dist-linux.gz || \
@ -34,11 +34,11 @@ ADD target/generated-resources/licenses.xml /licenses/
ADD target/generated-sources/license/THIRD-PARTY.txt /licenses/
RUN groupadd -g ${GROUPID} ${GROUPNAME} && \
useradd -u ${USERID} -G ${GROUPNAME} ${USERNAME} && \
chgrp -R ${GROUPNAME} /usr/bin/alfresco-docker-libreoffice.jar
useradd -u ${USERID} -G ${GROUPNAME} ${LIBREUSERNAME} && \
chgrp -R ${GROUPNAME} /usr/bin/${env.project_artifactId}.jar
EXPOSE 8090
USER ${USERNAME}
USER ${LIBREUSERNAME}
ENTRYPOINT java $JAVA_OPTS -jar /usr/bin/alfresco-docker-libreoffice.jar
ENTRYPOINT java $JAVA_OPTS -jar /usr/bin/${env.project_artifactId}.jar

View File

@ -1,19 +1,20 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>alfresco-docker-libreoffice</artifactId>
<name>Alfresco Docker LibreOffice</name>
<artifactId>alfresco-transform-libreoffice-boot</artifactId>
<name>Alfresco LibreOffice Transformer Spring Boot </name>
<packaging>jar</packaging>
<parent>
<groupId>org.alfresco</groupId>
<artifactId>alfresco-transform-core</artifactId>
<version>2.1.2-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
<version>2.2.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<properties>
<image.name>alfresco/alfresco-libreoffice</image.name>
<image.registry>quay.io</image.registry>
<env.project_artifactId>${project.artifactId}</env.project_artifactId>
</properties>
<dependencies>
@ -30,6 +31,11 @@
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.alfresco</groupId>
<artifactId>alfresco-transform-libreoffice</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>

View File

@ -77,8 +77,7 @@ public class LibreOfficeController extends AbstractTransformerController
{
private static final Logger logger = LoggerFactory.getLogger(LibreOfficeController.class);
@Autowired
private LibreOfficeJavaExecutor javaExecutor;
private LibreOfficeJavaExecutor javaExecutor = new LibreOfficeJavaExecutor();
@Override
public String getTransformerName()

View File

@ -70,6 +70,7 @@ import org.springframework.http.HttpHeaders;
import org.springframework.http.ResponseEntity;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.util.ReflectionTestUtils;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
/**
@ -96,6 +97,8 @@ public class LibreOfficeControllerTest extends AbstractTransformerControllerTest
targetExtension = "pdf";
sourceMimetype = "application/msword";
ReflectionTestUtils.setField(controller, "javaExecutor", javaExecutor);
// The following is based on super.mockTransformCommand(...)
// This is because LibreOffice used JodConverter rather than a RuntimeExec

View File

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>alfresco-transform-libreoffice</artifactId>
<name>Alfresco LibreOffice Transformer</name>
<packaging>jar</packaging>
<parent>
<artifactId>alfresco-transform-core</artifactId>
<groupId>org.alfresco</groupId>
<version>2.2.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<dependencies>
<dependency>
<groupId>org.alfresco</groupId>
<artifactId>alfresco-transformer-base</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
</dependency>
<dependency>
<groupId>org.alfresco</groupId>
<artifactId>alfresco-jodconverter-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>license-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

View File

@ -32,8 +32,6 @@ import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR;
import java.io.File;
import java.io.IOException;
import javax.annotation.PostConstruct;
import org.alfresco.transform.exceptions.TransformException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
@ -43,7 +41,6 @@ import org.artofsolving.jodconverter.office.OfficeException;
import org.artofsolving.jodconverter.office.OfficeManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import com.sun.star.task.ErrorCodeIOException;
@ -51,7 +48,6 @@ import com.sun.star.task.ErrorCodeIOException;
* JavaExecutor implementation for running LibreOffice transformations. It loads the
* transformation logic in the same JVM (check the {@link JodConverter} implementation).
*/
@Component
public class LibreOfficeJavaExecutor implements JavaExecutor
{
private static final Logger logger = LoggerFactory.getLogger(LibreOfficeJavaExecutor.class);
@ -61,8 +57,7 @@ public class LibreOfficeJavaExecutor implements JavaExecutor
private JodConverter jodconverter;
@PostConstruct
public void init()
public LibreOfficeJavaExecutor()
{
jodconverter = createJodConverter();
}

View File

@ -8,12 +8,12 @@ ENV JAVA_OPTS=""
# Set default user information
ARG GROUPNAME=Alfresco
ARG GROUPID=1000
ARG USERNAME=transform-misc
ARG MISCUSERNAME=transform-misc
ARG USERID=33004
COPY target/alfresco-docker-transform-misc-${env.project_version}.jar /usr/bin
COPY target/${env.project_artifactId}-${env.project_version}.jar /usr/bin
RUN ln /usr/bin/alfresco-docker-transform-misc-${env.project_version}.jar /usr/bin/alfresco-docker-transform-misc.jar && \
RUN ln /usr/bin/${env.project_artifactId}-${env.project_version}.jar /usr/bin/${env.project_artifactId}.jar && \
curl -s -S $APACHE_LICENSE_FILE -o Apache\ 2.0.txt && \
yum clean all
@ -22,11 +22,11 @@ ADD target/generated-resources/licenses.xml /licenses/
ADD target/generated-sources/license/THIRD-PARTY.txt /licenses/
RUN groupadd -g ${GROUPID} ${GROUPNAME} && \
useradd -u ${USERID} -G ${GROUPNAME} ${USERNAME} && \
chgrp -R ${GROUPNAME} /usr/bin/alfresco-docker-transform-misc.jar
useradd -u ${USERID} -G ${GROUPNAME} ${MISCUSERNAME} && \
chgrp -R ${GROUPNAME} /usr/bin/${env.project_artifactId}.jar
EXPOSE 8090
USER ${USERNAME}
USER ${MISCUSERNAME}
ENTRYPOINT java $JAVA_OPTS -jar /usr/bin/alfresco-docker-transform-misc.jar
ENTRYPOINT java $JAVA_OPTS -jar /usr/bin/${env.project_artifactId}.jar

View File

@ -2,20 +2,21 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>alfresco-docker-transform-misc</artifactId>
<artifactId>alfresco-transform-misc-boot</artifactId>
<name>Alfresco Docker Miscellaneous Transformers</name>
<packaging>jar</packaging>
<parent>
<groupId>org.alfresco</groupId>
<artifactId>alfresco-transform-core</artifactId>
<version>2.1.2-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
<version>2.2.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<properties>
<image.name>alfresco/alfresco-transform-misc</image.name>
<image.registry>quay.io</image.registry>
<env.project_artifactId>${project.artifactId}</env.project_artifactId>
</properties>
<dependencies>
@ -32,6 +33,12 @@
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.alfresco</groupId>
<artifactId>alfresco-transform-misc</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
@ -52,40 +59,6 @@
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
</dependency>
<!-- HtmlParserContentTransformer -->
<dependency>
<groupId>org.htmlparser</groupId>
<artifactId>htmlparser</artifactId>
<version>2.1</version>
</dependency>
<!-- AppleIWorksContentTransformer -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
</dependency>
<!-- TextToPdfContentTransformer -->
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox-tools</artifactId>
<version>2.0.19</version>
</dependency>
<!-- OOXMLThumbnailContentTransformer -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${dependency.poi.version}</version>
</dependency>
<!-- EMLTransformer -->
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
</dependencies>
<build>

View File

@ -60,8 +60,7 @@ public class MiscController extends AbstractTransformerController
{
private static final Logger logger = LoggerFactory.getLogger(MiscController.class);
@Autowired
private SelectingTransformer transformer;
private SelectingTransformer transformer = new SelectingTransformer();
@Override
public String getTransformerName()

View File

@ -62,7 +62,6 @@ import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilde
@RunWith(SpringRunner.class)
@WebMvcTest(MiscController.class)
@Import({SelectingTransformer.class})
public class MiscControllerTest extends AbstractTransformerControllerTest
{
@Autowired

Some files were not shown because too many files have changed in this diff Show More