From abc10a475ef037e2e1e32557fdca2e8050d7e30b Mon Sep 17 00:00:00 2001 From: Alexandru Epure Date: Tue, 9 Aug 2016 13:22:25 +0000 Subject: [PATCH] Merged 5.2.N (5.2.1) to HEAD (5.2) 128176 adavis: 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/HEAD/root@129273 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); }