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); }
private static void AddValueToResultCollection(SyncPropertyDefinition property, ArrayList result, object value) { object obj = SyncValueConvertor.ConvertSingleValueForDirectoryProperty(property, value); if (obj != SyncValueConvertor.IgnoreValue) { result.Add(obj); } }
private static void ConvertMultipleValues(SyncPropertyDefinition property, IList values, ref IList convertedValues, List <ValidationError> errors) { foreach (object value in values) { ValidationError validationError = null; object obj = SyncValueConvertor.ConvertSingleValue(property, value, out validationError); if (obj != null) { convertedValues.Add(obj); } if (validationError != null) { errors.Add(validationError); } } }
public static IList GetValuesForDirectoryProperty(SyncPropertyDefinition property, object value) { ArrayList result = new ArrayList(); if (property.IsMultivalued) { MultiValuedPropertyBase multiValuedPropertyBase = (MultiValuedPropertyBase)value; using (IEnumerator enumerator = ((IEnumerable)multiValuedPropertyBase).GetEnumerator()) { while (enumerator.MoveNext()) { object value2 = enumerator.Current; SyncValueConvertor.AddValueToResultCollection(property, result, value2); } return(result); } } SyncValueConvertor.AddValueToResultCollection(property, result, value); return(result); }
private static object ConvertSingleValue(SyncPropertyDefinition property, object value, out ValidationError error) { error = null; if (value is XmlValueAssignedPlan) { return(((XmlValueAssignedPlan)value).Plan); } if (value is XmlValueCompanyVerifiedDomain) { return(((XmlValueCompanyVerifiedDomain)value).Domain); } if (value is XmlValueDirSyncStatus) { return(SyncValueConvertor.ConvertDirSyncStatusToString(((XmlValueDirSyncStatus)value).DirSyncStatus)); } if (value is AttributeSet) { return(SyncValueConvertor.ConvertAttributeSetToString((AttributeSet)value)); } if (value is XmlValueValidationError) { return(((XmlValueValidationError)value).ErrorInfo); } if (value is XmlValueLicenseUnitsDetail) { return(SyncValueConvertor.ConvertXmlValueLicenseUnitsDetailToString((XmlValueLicenseUnitsDetail)value)); } if (property == SyncSubscribedPlanSchema.Capability) { return(((XmlElement)value).OuterXml); } if (property == SyncCompanySchema.CompanyPartnership) { return(SyncValueConvertor.ConvertCompanyPartnershipToString((XmlValueCompanyPartnership)value)); } if (property == SyncRecipientSchema.SipAddresses) { string text = (string)value; if (!string.IsNullOrEmpty(text) && !text.StartsWith(ProxyAddressPrefix.SIP.ToString() + ':', StringComparison.OrdinalIgnoreCase)) { value = ProxyAddressPrefix.SIP.ToString() + ':' + text; } } else { if (property.Type == typeof(RemoteRecipientType)) { return((RemoteRecipientType)value); } if (property.Type == typeof(RecipientTypeDetails)) { return((RecipientTypeDetails)value); } if (property.Type == typeof(MailboxAuditOperations)) { return((MailboxAuditOperations)value); } if (property.Type == typeof(ElcMailboxFlags)) { return((ElcMailboxFlags)value); } if (property.Type == typeof(DateTime?)) { return((DateTime?)value); } if (property.Type == typeof(DateTime)) { return((DateTime)value); } if (property.Type == typeof(EnhancedTimeSpan)) { return(TimeSpan.FromSeconds((double)((int)value))); } if (value is XmlValueRightsManagementTenantConfiguration) { return(((XmlValueRightsManagementTenantConfiguration)value).RightsManagementTenantConfiguration); } if (value is XmlValueRightsManagementTenantKey) { return(((XmlValueRightsManagementTenantKey)value).RightsManagementTenantKey); } if (value is XmlValueServiceInfo) { return(((XmlValueServiceInfo)value).Info); } if (value is int || value is bool) { return(value); } if (value is DirectoryReferenceAddressList) { DirectoryReferenceAddressList directoryReferenceAddressList = (DirectoryReferenceAddressList)value; if (!directoryReferenceAddressList.TargetDeleted) { return(new PropertyReference(directoryReferenceAddressList.Value, directoryReferenceAddressList.TargetClass, directoryReferenceAddressList.TargetDeleted)); } return(null); } else if (value is DirectoryReferenceUserAndServicePrincipal) { DirectoryReferenceUserAndServicePrincipal directoryReferenceUserAndServicePrincipal = (DirectoryReferenceUserAndServicePrincipal)value; return(directoryReferenceUserAndServicePrincipal.Value); } } bool noConversionRequired = property.Type == typeof(byte[]) || property.Type == typeof(string); return(ADValueConvertor.ConvertFromADAndValidateSingleValue(value, property, noConversionRequired, out error)); }
public static string ConvertCompanyPartnershipToString(XmlValueCompanyPartnership companyPartnership) { return(SyncValueConvertor.ConvertToBasicXml <PartnershipValue[]>(companyPartnership.Partnerships)); }
public static string ConvertXmlValueLicenseUnitsDetailToString(XmlValueLicenseUnitsDetail licenseDetail) { return(SyncValueConvertor.ConvertToBasicXml <LicenseUnitsDetailValue>(licenseDetail.LicenseUnitsDetail)); }
private static object ConvertSingleValueForDirectoryProperty(SyncPropertyDefinition property, object value) { if (object.Equals(property.DefaultValue, value) && !property.PersistDefaultValue) { return(SyncValueConvertor.IgnoreValue); } if (value == null) { return(null); } if (typeof(DirectoryPropertyString).IsAssignableFrom(property.ExternalType) || property.ExternalType == typeof(string)) { return(ADValueConvertor.ConvertValueToString(value, property.FormatProvider)); } if (typeof(DirectoryPropertyGuid).IsAssignableFrom(property.ExternalType)) { return(ADValueConvertor.ConvertValueToString(value, property.FormatProvider)); } if (typeof(DirectoryPropertyBinary).IsAssignableFrom(property.ExternalType)) { return(ADValueConvertor.ConvertValueToBinary(value, property.FormatProvider)); } if (typeof(DirectoryPropertyBoolean).IsAssignableFrom(property.ExternalType)) { return(bool.Parse(ADValueConvertor.ConvertValueToString(value, property.FormatProvider))); } if (typeof(DirectoryPropertyInt32).IsAssignableFrom(property.ExternalType)) { return(int.Parse(ADValueConvertor.ConvertValueToString(value, property.FormatProvider))); } if (typeof(DirectoryPropertyDateTime).IsAssignableFrom(property.ExternalType)) { Type type = value.GetType(); if (type.Equals(typeof(DateTime))) { return(((DateTime)value).ToUniversalTime()); } return(DateTime.Parse(ADValueConvertor.ConvertValueToString(value, property.FormatProvider), property.FormatProvider)); } else { if (typeof(DirectoryPropertyXmlServiceOriginatedResource) == property.ExternalType && value is Capability) { Capability capability = (Capability)value; if (CapabilityHelper.IsAllowedSKUCapability(capability)) { Guid skucapabilityGuid = CapabilityHelper.GetSKUCapabilityGuid(capability); if (skucapabilityGuid != Guid.Empty) { return(new XmlValueServiceOriginatedResource { Resource = new ServiceOriginatedResourceValue { ServicePlanId = skucapabilityGuid.ToString("D"), Capability = capability.ToString() } }); } } return(SyncValueConvertor.IgnoreValue); } if (typeof(DirectoryPropertyXmlDirSyncStatus).IsAssignableFrom(property.ExternalType)) { string stringValue = (string)value; return(new XmlValueDirSyncStatus { DirSyncStatus = SyncValueConvertor.ConvertStringToDirSyncStatus(stringValue) }); } if (typeof(DirectoryPropertyReferenceAddressList).IsAssignableFrom(property.ExternalType) && value is PropertyReference) { PropertyReference propertyReference = (PropertyReference)value; return(new DirectoryReferenceAddressList { TargetClass = propertyReference.TargetObjectClass, Value = propertyReference.TargetId, TargetDeleted = propertyReference.TargetDeleted }); } throw new NotSupportedException("Conversion for external type " + property.ExternalType.Name); } }