From bf346dba70b5e1be3215eaed466e03ae4d2c09ec Mon Sep 17 00:00:00 2001 From: Alan Davis Date: Thu, 16 Jun 2016 15:23:07 +0000 Subject: [PATCH] MNT-16381 Transformers must validate the content stream mimetype - Tika has problems identifying eps - it guesses ps, so allow this through. - Fix lost line in DifferrentMimeTypeTest git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@128176 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../transform/AbstractContentTransformer2.java | 13 +++++++++---- .../content/transform/DifferrentMimeTypeTest.java | 1 + 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/source/java/org/alfresco/repo/content/transform/AbstractContentTransformer2.java b/source/java/org/alfresco/repo/content/transform/AbstractContentTransformer2.java index e48f8e192b..a5c81fbbf2 100644 --- a/source/java/org/alfresco/repo/content/transform/AbstractContentTransformer2.java +++ b/source/java/org/alfresco/repo/content/transform/AbstractContentTransformer2.java @@ -36,7 +36,8 @@ import java.util.concurrent.TimeoutException; import org.alfresco.api.AlfrescoPublicApi; import org.alfresco.error.AlfrescoRuntimeException; -import org.alfresco.repo.content.AbstractStreamAwareProxy; +import org.alfresco.repo.content.AbstractStreamAwareProxy; +import org.alfresco.repo.content.MimetypeMap; import org.alfresco.repo.content.StreamAwareContentReaderProxy; import org.alfresco.repo.content.StreamAwareContentWriterProxy; import org.alfresco.repo.content.metadata.AbstractMappingMetadataExtracter; @@ -252,7 +253,7 @@ public abstract class AbstractContentTransformer2 extends AbstractContentTransfo // MNT-16381: check the mimetype of the file supplied by the user // matches the sourceMimetype of the reader. Intermediate files are // not checked. - strictMimeTypeCheck(reader, options); + strictMimeTypeCheck(reader, options, sourceMimetype); // Check the transformability checkTransformable(reader, writer, options); @@ -438,13 +439,17 @@ public abstract class AbstractContentTransformer2 extends AbstractContentTransfo } } - private void strictMimeTypeCheck(ContentReader reader, TransformationOptions options) + private void strictMimeTypeCheck(ContentReader reader, TransformationOptions options, String sourceMimetype) throws UnsupportedTransformationException { if (strictMimeTypeCheck && depth.get() == 1) { String differentType = getMimetypeService().getMimetypeIfNotMatches(reader.getReader()); - if (differentType != null) + if (differentType != null && + // Known problematic mimetypes for Tika to identify + !(MimetypeMap.MIMETYPE_APPLICATION_EPS.equals(sourceMimetype) && + MimetypeMap.MIMETYPE_APPLICATION_PS.equals(differentType)) + ) { String fileName = transformerDebug.getFileName(options, true, 0); String readerSourceMimetype = reader.getMimetype(); diff --git a/source/test-java/org/alfresco/repo/content/transform/DifferrentMimeTypeTest.java b/source/test-java/org/alfresco/repo/content/transform/DifferrentMimeTypeTest.java index c236dd03ac..d683ae8f03 100644 --- a/source/test-java/org/alfresco/repo/content/transform/DifferrentMimeTypeTest.java +++ b/source/test-java/org/alfresco/repo/content/transform/DifferrentMimeTypeTest.java @@ -181,6 +181,7 @@ public class DifferrentMimeTypeTest extends TestCase } // Try to transform file with accurate MIME type + contentReader = contentReader.getReader(); contentReader.setMimetype(actualSourceMimetype); actualTransformer.transform(contentReader, outputWriter, options); }