Fixed ALF-4512: MLText and NULL storage problems

- Synchronizing the cached values with the low-level DB keys had problems for some use-cases
   - Switching from null ML value in default locale (real null) to null value in a specific locale
   - Switching from d:any empty array to d:any empty array of empty arrays
   - other odd cases
 - Refactored the differencing code to do high-level differences
   - This makes it easier to take care of the switches between properties states
   - Sacrifices on performance when dealing with 100K multivalued properties


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@22059 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2010-08-29 20:38:39 +00:00
parent 8651121fce
commit 49e20b142d
4 changed files with 113 additions and 135 deletions

View File

@@ -578,8 +578,9 @@ public class NodePropertyHelper
// Get the local entry value
Serializable entryValue = makeSerializableValue(propertyDef, propertyValue);
// A default locale indicates a simple value i.e. the entry represents the whole value.
if (isDefaultLocale)
// A default locale indicates a simple value i.e. the entry represents the whole value,
// unless the dictionary specifically declares it to be d:mltext
if (isDefaultLocale && !isMLText)
{
// Check and warn if there are other values
if (propertyValuesSize > 1)