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();