diff --git a/source/java/org/alfresco/repo/content/metadata/AbstractMappingMetadataExtracter.java b/source/java/org/alfresco/repo/content/metadata/AbstractMappingMetadataExtracter.java index d8a3f75a57..c432c6028d 100644 --- a/source/java/org/alfresco/repo/content/metadata/AbstractMappingMetadataExtracter.java +++ b/source/java/org/alfresco/repo/content/metadata/AbstractMappingMetadataExtracter.java @@ -373,6 +373,9 @@ abstract public class AbstractMappingMetadataExtracter implements MetadataExtrac * Set if the property mappings augment or override the mapping generically provided by the * extracter implementation. The default is false, i.e. any mapping set completely * replaces the {@link #getDefaultMapping() default mappings}. + *

+ * Note that even when set to true an individual property mapping entry replaces the + * entry provided by the extracter implementation. * * @param inheritDefaultMapping true to add the configured mapping * to the list of default mappings. @@ -426,6 +429,9 @@ abstract public class AbstractMappingMetadataExtracter implements MetadataExtrac * Set if the embed property mappings augment or override the mapping generically provided by the * extracter implementation. The default is false, i.e. any mapping set completely * replaces the {@link #getDefaultEmbedMapping() default mappings}. + *

+ * Note that even when set to true an individual property mapping entry replaces the + * entry provided by the extracter implementation. * * @param inheritDefaultEmbedMapping true to add the configured embed mapping * to the list of default embed mappings. @@ -976,9 +982,9 @@ abstract public class AbstractMappingMetadataExtracter implements MetadataExtrac { systemQNames = new HashSet(3); mapping.put(documentKey, systemQNames); + Set defaultQNames = defaultMapping.get(documentKey); + systemQNames.addAll(defaultQNames); } - Set defaultQNames = defaultMapping.get(documentKey); - systemQNames.addAll(defaultQNames); } } @@ -1018,9 +1024,9 @@ abstract public class AbstractMappingMetadataExtracter implements MetadataExtrac { metadataKeys = new HashSet(3); embedMapping.put(modelProperty, metadataKeys); + Set defaultMetadataKeys = defaultEmbedMapping.get(modelProperty); + metadataKeys.addAll(defaultMetadataKeys); } - Set defaultMetadataKeys = defaultEmbedMapping.get(modelProperty); - metadataKeys.addAll(defaultMetadataKeys); } } diff --git a/source/java/org/alfresco/repo/content/metadata/MappingMetadataExtracterTest.java b/source/java/org/alfresco/repo/content/metadata/MappingMetadataExtracterTest.java index 194c33dffa..706b9a01f2 100644 --- a/source/java/org/alfresco/repo/content/metadata/MappingMetadataExtracterTest.java +++ b/source/java/org/alfresco/repo/content/metadata/MappingMetadataExtracterTest.java @@ -168,14 +168,28 @@ public class MappingMetadataExtracterTest extends TestCase // Added a3 destination.clear(); extracter.extract(reader, destination); - assertEquals(5, destination.size()); - assertTrue(destination.containsKey(DummyMappingMetadataExtracter.QNAME_A1)); - assertTrue(destination.containsKey(DummyMappingMetadataExtracter.QNAME_A2)); + assertEquals(3, destination.size()); assertTrue(destination.containsKey(DummyMappingMetadataExtracter.QNAME_A3)); assertTrue(destination.containsKey(DummyMappingMetadataExtracter.QNAME_B)); assertTrue(destination.containsKey(DummyMappingMetadataExtracter.QNAME_IMG)); } + public void testPropertyMappingDisable() throws Exception + { + Properties props = new Properties(); + props.put("namespace.prefix.my", DummyMappingMetadataExtracter.NAMESPACE_MY); + props.put(DummyMappingMetadataExtracter.PROP_A, ""); + extracter.setMappingProperties(props); + extracter.setInheritDefaultMapping(true); + extracter.register(); + // Added a3 + destination.clear(); + extracter.extract(reader, destination); + assertEquals(2, destination.size()); + assertTrue(destination.containsKey(DummyMappingMetadataExtracter.QNAME_B)); + assertTrue(destination.containsKey(DummyMappingMetadataExtracter.QNAME_IMG)); + } + public void testPropertyMappingOverrideExtra() throws Exception { Properties props = new Properties();