private const int CAT_DEFAULT = 1; // default tracing event category #endregion Fields #region Methods /// <summary> /// Converts any value to a form that can be stored into connector attribute. /// </summary> /// <param name="value"></param> /// <param name="isMultivalued"></param> /// <returns></returns> public static ICollection<object> ConvertToSupportedForm(ConnectorAttributeInfo cai, object value) { IList<object> rv = new List<object>(); if (cai.IsMultiValued && value is IEnumerable) { foreach (object v in (IEnumerable)value) { if (v == null) { continue; } if (!IsSupported(cai, v)) { rv.Add(v.ToString()); } else { rv.Add(v); } } } else { if (value != null && !IsSupported(cai, value)) { rv.Add(value.ToString()); } else { rv.Add(value); } } return rv; }
private static bool IsSupported(ConnectorAttributeInfo cai, object value) { if (!FrameworkUtil.IsSupportedAttributeType(value.GetType())) { LOGGER.TraceEvent(TraceEventType.Verbose, CAT_DEFAULT, "Unsupported attribute type ... calling ToString (Name: \'{0}\' Type: \'{1}\' String Value: \'{2}\'", cai.Name, value.GetType(), value.ToString()); return false; } else { return true; } }
/// <summary> /// Add each <see cref="ConnectorAttributeInfo" /> object to the <see cref="ObjectClassInfo" />. /// </summary> public ObjectClassInfoBuilder AddAttributeInfo(ConnectorAttributeInfo info) { if (_info.ContainsKey(info.Name)) { const string MSG = "ConnectorAttributeInfo of name ''{0}'' already exists!"; throw new ArgumentException(String.Format(MSG, info.Name)); } _info[info.Name] = info; return this; }
/// <summary> /// Determines if this attribute is a special attribute. /// </summary> /// <param name="attr"> /// <see cref="ConnectorAttribute" /> to test for against.</param> /// <returns>true iff the attribute value is a <see cref="Uid" />, /// <see cref="ObjectClass" />, <see cref="Password" />, or /// <see cref="OperationalAttributes" />.</returns> /// <exception cref="NullReferenceException">iff the attribute parameter is null.</exception> public static bool IsSpecial(ConnectorAttributeInfo attr) { String name = attr.Name; return IsSpecialName(name); }
private void SetFlag(ConnectorAttributeInfo.Flags flag, bool value) { if (value) { _flags = _flags | flag; } else { _flags = _flags & ~flag; } }
/// <summary> /// Convenience method to create an AttributeInfo. /// </summary> /// <remarks> /// Equivalent to /// <code> /// new AttributeInfoBuilder(name,type).setFlags(flags).build() /// </code> /// </remarks> /// <param name="name">The name of the attribute</param> /// <param name="type">The type of the attribute</param> /// <param name="flags">The flags for the attribute. Null means clear all flags</param> /// <returns>The attribute info</returns> public static ConnectorAttributeInfo Build(String name, Type type, ConnectorAttributeInfo.Flags flags) { return new ConnectorAttributeInfoBuilder(name, type) { InfoFlags = flags }.Build(); }