diff --git a/source/test-java/org/alfresco/repo/content/metadata/MappingMetadataExtracterTest.java b/source/test-java/org/alfresco/repo/content/metadata/MappingMetadataExtracterTest.java index 706b9a01f2..c068820a8f 100644 --- a/source/test-java/org/alfresco/repo/content/metadata/MappingMetadataExtracterTest.java +++ b/source/test-java/org/alfresco/repo/content/metadata/MappingMetadataExtracterTest.java @@ -18,8 +18,10 @@ */ package org.alfresco.repo.content.metadata; +import java.io.File; import java.io.Serializable; import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Map; @@ -32,11 +34,13 @@ import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.repo.content.ContentMinimalContextTestSuite; import org.alfresco.repo.content.MimetypeMap; import org.alfresco.repo.content.filestore.FileContentReader; +import org.alfresco.repo.content.filestore.FileContentWriter; import org.alfresco.repo.content.metadata.MetadataExtracter.OverwritePolicy; import org.alfresco.repo.content.transform.AbstractContentTransformerTest; import org.alfresco.service.cmr.repository.ContentReader; import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.QName; +import org.alfresco.util.TempFileProvider; import org.springframework.context.ApplicationContext; /** @@ -270,6 +274,45 @@ public class MappingMetadataExtracterTest extends TestCase assertEquals(null, destination.get(DummyMappingMetadataExtracter.QNAME_B)); } + /** + * @see MNT-13919 + */ + public void testEmbedSupportDifferentFromExtract() + { + DummyMetadataEmbedder embedder = new DummyMetadataEmbedder(); + Map propertiesToEmbed = new HashMap(); + + // make a writer for the target of the embed, we won't actually use it + File targetFile = TempFileProvider.createTempFile( + getClass().getSimpleName() + "_" + getName() + "_embed", + ".txt"); + FileContentWriter writer = new FileContentWriter(targetFile); + writer.setMimetype(DummyMetadataEmbedder.MIMETYPE_EMBEDDABLE); + + try + { + embedder.embed(propertiesToEmbed, reader, writer); + } + catch (AlfrescoRuntimeException e) + { + if (e.getMessage().contains("Metadata extracter does not support embedding mimetype")) + { + fail("Embed mimetype should not be tied to extracter's extract mimetypes"); + } + else + { + fail(e.getMessage()); + } + } + finally + { + if (targetFile != null && targetFile.exists()) + { + targetFile.delete(); + } + } + } + /** * A spoofed-up extracter that extracts the following: *
@@ -388,4 +431,27 @@ public class MappingMetadataExtracterTest extends TestCase
         private static final JunkValue INSTANCE = new JunkValue();
         private static final long serialVersionUID = 1L;
     }
+    
+    /**
+     * Mock metadata embedder which has a set of supported embed mimetypes different than
+     * the supported extract mimetypes.
+     */
+    private class DummyMetadataEmbedder extends AbstractMappingMetadataExtracter
+    {
+        private static final String MIMETYPE_EXTRACTABLE = "extractableMimetype";
+        private static final String MIMETYPE_EMBEDDABLE = "embeddableMimetype";
+        
+        public DummyMetadataEmbedder()
+        {
+            super(Collections.singleton(MIMETYPE_EXTRACTABLE), 
+                    Collections.singleton(MIMETYPE_EMBEDDABLE));
+            init();
+        }
+        
+        @Override
+        protected Map extractRaw(ContentReader reader) throws Throwable
+        {
+            return null;
+        }
+    }
 }
diff --git a/source/test-resources/alfresco/metadata/MappingMetadataExtracterTest-DummyMetadataEmbedder.properties b/source/test-resources/alfresco/metadata/MappingMetadataExtracterTest-DummyMetadataEmbedder.properties
new file mode 100644
index 0000000000..d17bdfbb76
--- /dev/null
+++ b/source/test-resources/alfresco/metadata/MappingMetadataExtracterTest-DummyMetadataEmbedder.properties
@@ -0,0 +1,6 @@
+#
+# Dummy - default mapping
+#
+# Namespaces
+namespace.prefix.cm=http://www.alfresco.org/model/content/1.0
+namespace.prefix.dum=http://DummyMetadataEmbedder