Merged 5.1.N (5.1.1) to HEAD (5.1)

119696 rmunteanu: Merged 5.0.N (5.0.4) to 5.1.N (5.1.1)
      119612 amorarasu: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.4)
         119559 ragauss: MNT-13919: Check for Metadata Embed Support is Incorrect
           - Added unit test


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@123602 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Alan Davis
2016-03-11 21:26:32 +00:00
parent 4437411508
commit 4314768f44
2 changed files with 72 additions and 0 deletions

View File

@@ -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 <a href="https://issues.alfresco.com/jira/browse/MNT-13919">MNT-13919</a>
*/
public void testEmbedSupportDifferentFromExtract()
{
DummyMetadataEmbedder embedder = new DummyMetadataEmbedder();
Map<QName, Serializable> propertiesToEmbed = new HashMap<QName, Serializable>();
// 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:
* <pre>
@@ -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<String, Serializable> extractRaw(ContentReader reader) throws Throwable
{
return null;
}
}
}