public void TestAttributeInfo() { ConnectorAttributeInfoBuilder builder = new ConnectorAttributeInfoBuilder(); builder.Name = ("foo"); builder.ValueType = (typeof(String)); builder.Required = (true); builder.Readable = (true); builder.Creatable = (true); builder.Updateable = (true); builder.MultiValued = (true); builder.ReturnedByDefault = false; ConnectorAttributeInfo v1 = builder.Build(); ConnectorAttributeInfo v2 = (ConnectorAttributeInfo)CloneObject(v1); Assert.AreEqual(v1, v2); Assert.AreEqual("foo", v2.Name); Assert.AreEqual(typeof(String), v2.ValueType); Assert.IsTrue(v2.IsMultiValued); Assert.IsTrue(v2.IsReadable); Assert.IsTrue(v2.IsRequired); Assert.IsTrue(v2.IsUpdateable); Assert.IsTrue(v2.IsCreatable); Assert.IsFalse(v2.IsReturnedByDefault); builder.InfoFlags = AllFlags(); v1 = builder.Build(); v2 = (ConnectorAttributeInfo)CloneObject(v1); Assert.AreEqual(v1, v2); }
/// <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())) { LOG.Debug("Unsupported attribute type ... calling ToString (Name: \'{0}\' Type: \'{1}\' String Value: \'{2}\'", cai.Name, value.GetType(), value.ToString()); return(false); } else { return(true); } }