public static object GetValuesFromDirectoryProperty(SyncPropertyDefinition property, DirectoryProperty originalValues, List <ValidationError> errors) { if (originalValues == null) { return(null); } IList values = originalValues.GetValues(); if (values == null || values.Count == 0 || values == DirectoryProperty.EmptyValues) { return(null); } if (property.IsMultivalued) { IList values2 = new ArrayList(values.Count); SyncValueConvertor.ConvertMultipleValues(property, values, ref values2, errors); MultiValuedPropertyBase multiValuedPropertyBase = ADValueConvertor.CreateGenericMultiValuedProperty(property, property.IsReadOnly, values2, null, null); multiValuedPropertyBase.IsCompletelyRead = true; return(multiValuedPropertyBase); } ValidationError validationError = null; object result = SyncValueConvertor.ConvertSingleValue(property, values[0], out validationError); if (validationError != null) { errors.Add(validationError); } return(result); }
internal override MultiValuedPropertyBase CreateMultiValuedProperty(ProviderPropertyDefinition propertyDefinition, bool createAsReadOnly, ICollection values, ICollection invalidValues, LocalizedString?readOnlyErrorMessage) { if (propertyDefinition.Type == typeof(KindKeyword)) { return(new MultiValuedProperty <KindKeyword>(createAsReadOnly, propertyDefinition, values, invalidValues, readOnlyErrorMessage)); } return(ADValueConvertor.CreateGenericMultiValuedProperty(propertyDefinition, createAsReadOnly, values, invalidValues, readOnlyErrorMessage)); }
internal static MultiValuedPropertyBase GetAddedRemovedLinks(ADPropertyDefinition propertyDefinition, SearchResultAttributeCollection attributeCollection, List <ADPropertyDefinition> rangedProperties, List <ValidationError> errors) { MultiValuedProperty <ADObjectId> links = ADDirSyncHelper.GetLinks(propertyDefinition, false, attributeCollection, rangedProperties, errors); MultiValuedProperty <ADObjectId> links2 = ADDirSyncHelper.GetLinks(propertyDefinition, true, attributeCollection, rangedProperties, errors); if (links != null || links2 != null) { List <ADDirSyncLink> list = new List <ADDirSyncLink>(); ADDirSyncHelper.AddLinks(list, links, LinkState.Added, propertyDefinition); ADDirSyncHelper.AddLinks(list, links2, LinkState.Removed, propertyDefinition); return(ADValueConvertor.CreateGenericMultiValuedProperty(propertyDefinition, true, list, ADDirSyncHelper.EmptyList, null)); } return(null); }
internal override MultiValuedPropertyBase CreateMultiValuedProperty(ProviderPropertyDefinition propertyDefinition, bool createAsReadOnly, ICollection values, ICollection invalidValues, LocalizedString?readOnlyErrorMessage) { return(ADValueConvertor.CreateGenericMultiValuedProperty(propertyDefinition, createAsReadOnly, values, invalidValues, readOnlyErrorMessage)); }
private static void AddPropertyToPropertyBag(ADPropertyDefinition propertyDefinition, PropertyBag propertyBag, SimpleADObject.SimpleList <SimpleADObject.SimpleADProperty> lookup) { if (propertyBag.Contains(propertyDefinition)) { return; } if (propertyDefinition.IsCalculated) { foreach (ProviderPropertyDefinition providerPropertyDefinition in propertyDefinition.SupportingProperties) { ADPropertyDefinition propertyDefinition2 = (ADPropertyDefinition)providerPropertyDefinition; SimpleADObject.AddPropertyToPropertyBag(propertyDefinition2, propertyBag, lookup); } return; } if (string.IsNullOrEmpty(propertyDefinition.LdapDisplayName)) { return; } SimpleADObject.SimpleADProperty simpleADProperty; if (!lookup.TryGetValue(propertyDefinition.LdapDisplayName, out simpleADProperty) || simpleADProperty == null) { propertyBag.SetField(propertyDefinition, null); return; } if (simpleADProperty.Value == null) { propertyBag.SetField(propertyDefinition, null); return; } object value5; if (propertyDefinition.IsMultivalued) { ArrayList arrayList = new ArrayList(); ArrayList invalidValues = new ArrayList(); if (propertyDefinition.IsBinary) { List <byte[]> list = simpleADProperty.Value as List <byte[]>; if (list == null) { return; } using (List <byte[]> .Enumerator enumerator2 = list.GetEnumerator()) { while (enumerator2.MoveNext()) { byte[] value = enumerator2.Current; ValidationError validationError; object value2 = ADValueConvertor.ConvertFromADAndValidateSingleValue(value, propertyDefinition, propertyDefinition.Type == typeof(byte[]), out validationError); arrayList.Add(value2); } goto IL_17F; } } List <string> list2 = simpleADProperty.Value as List <string>; if (list2 == null) { return; } foreach (string value3 in list2) { ValidationError validationError2; object value4 = ADValueConvertor.ConvertFromADAndValidateSingleValue(value3, propertyDefinition, propertyDefinition.Type == typeof(string), out validationError2); arrayList.Add(value4); } IL_17F: MultiValuedPropertyBase multiValuedPropertyBase = ADValueConvertor.CreateGenericMultiValuedProperty(propertyDefinition, true, arrayList, invalidValues, null); multiValuedPropertyBase.IsCompletelyRead = true; value5 = multiValuedPropertyBase; } else { ValidationError validationError3; value5 = ADValueConvertor.ConvertFromADAndValidateSingleValue(simpleADProperty.Value, propertyDefinition, propertyDefinition.Type == (propertyDefinition.IsBinary ? typeof(byte[]) : typeof(string)), out validationError3); } propertyBag.SetField(propertyDefinition, value5); }