Exemplo n.º 1
0
		public override void SetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor, object oldValue, ref object value)
		{
			var newNode = (XmlNode) value;

			using (var writer = new XmlSubtreeWriter(node))
				newNode.WriteTo(writer);
		}
Exemplo n.º 2
0
		public override void SetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor, object oldValue, ref object value)
		{
			if (node.ClrType != typeof(object))
				XmlTypeSerializer.For(node.ClrType).SetValue(node, parent, accessor, oldValue, ref value);
			else
				node.Clear();
		}
Exemplo n.º 3
0
		private object GetValueCore(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor)
		{
			var itemType    = node.ClrType.GetGenericArguments()[0];
			var listType    = ListTypeConstructor.MakeGenericType(itemType);
			var subaccessor = accessor.GetCollectionAccessor(itemType);
			return Activator.CreateInstance(listType, node, parent, subaccessor);
		}
Exemplo n.º 4
0
		public override object GetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor)
		{
            using (var reader = new XmlSubtreeReader(node, Root))
                return serializer.CanDeserialize(reader)
                    ? serializer.Deserialize(reader)
                    : null;
		}
Exemplo n.º 5
0
		public override void SetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor, ref object value)
		{
			var source      = (Array) value;
			var target      = (Array) null;
			var itemType    = source.GetType().GetElementType();
			var subaccessor = accessor.GetCollectionAccessor(itemType);
			var cursor      = subaccessor.SelectCollectionItems(node, true);
			var serializer  = subaccessor.Serializer;
			var references  = XmlAdapter.For(parent).References;

			for (var i = 0; i < source.Length; i++)
			{
				var originalItem = source.GetValue(i);
				var assignedItem = originalItem;

				subaccessor.SetValue(cursor, parent, references, cursor.MoveNext(), null /* TODO: Get Value */, ref assignedItem);

				if (target != null)
				{
					target.SetValue(assignedItem, i);
				}
				else if (!Equals(assignedItem, originalItem))
				{
					target = Array.CreateInstance(itemType, source.Length);
					Array.Copy(source, target, i);
					target.SetValue(assignedItem, i);
				}
			}

			cursor.RemoveAllNext();

			if (target != null)
				value = target;
		}
Exemplo n.º 6
0
		public override object GetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor)
		{
			var source = node.AsRealizable<XmlNode>();

			return (source != null && source.IsReal)
				? source.Value
				: null;
		}
Exemplo n.º 7
0
		public override object GetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor)
		{
			var items      = new ArrayList();
			var itemType   = node.ClrType.GetElementType();
			var references = XmlAdapter.For(parent).References;

			accessor
				.GetCollectionAccessor(itemType)
				.GetCollectionItems(node, parent, references, items);

			return items.ToArray(itemType);
		}
Exemplo n.º 8
0
		public override void SetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor, object oldValue, ref object value)
		{
		    var serializable = (IXmlSerializable) value;
			var root = XmlDefaultSerializer.Root;

			using (var writer = new XmlSubtreeWriter(node))
			{
				// Pre-write containing element
				writer.WriteStartElement(string.Empty, root.ElementName, root.Namespace);
				serializable.WriteXml(writer);
				writer.WriteEndElement();
			}
		}
Exemplo n.º 9
0
		public override object GetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor)
		{
            var serializable = (IXmlSerializable) Activator.CreateInstance(node.ClrType);

			using (var reader = new XmlSubtreeReader(node, XmlDefaultSerializer.Root))
			{
				// Do NOT pre-read containing element
				// ...IXmlSerializable is not a symmetric contract
				serializable.ReadXml(reader);
			}

            return serializable;
		}
Exemplo n.º 10
0
		public override void SetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor, ref object value)
		{
			var current = value as IXmlCollection;
			if (current != null && current.Node.PositionEquals(node))
				return;

			var source = value as IEnumerable;
			if (source == null)
				throw Error.NotSupported();

			var collection = (IXmlCollection) GetValue(node, parent, accessor);
			collection.Replace(source);
			value = collection;
		}
Exemplo n.º 11
0
		public override void SetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor, object oldValue, ref object value)
		{
			var current = value as IXmlNodeSource;
			if (current != null && current.Node.PositionEquals(node))
				return;

			var newItems = value as IEnumerable;
			if (newItems == null)
				throw Error.NotSupported();

			var oldCollection = oldValue as ICollectionProjection;
			if (oldCollection != null)
				oldCollection.ClearReferences();

			var newCollection = (ICollectionProjection) GetValue(node, parent, accessor);
			newCollection.Replace(newItems);
			value = newCollection;
		}
Exemplo n.º 12
0
		public override void SetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor, ref object value)
		{
			// Require a dictionary adapter
			var source = value as IDictionaryAdapter;
			if (source == null)
				throw Error.NotDictionaryAdapter("value");

			// Detect assignment of own value
			var sourceAdapter = XmlAdapter.For(source, false);
			if (sourceAdapter != null && node.PositionEquals(sourceAdapter.Node))
				return;

			// Create a fresh component
			var targetAdapter = new XmlAdapter(node.Save(), XmlAdapter.For(parent).References);
			if (sourceAdapter != null)
				targetAdapter.References.UnionWith(sourceAdapter.References);
			var component = (IDictionaryAdapter) parent.CreateChildAdapter(node.ClrType, targetAdapter);

			// Copy value onto fresh component
			source.CopyTo(component);
			value = component;
		}
Exemplo n.º 13
0
 public TeamCityClient(IXmlAccessor accessor)
 {
     Accessor = accessor;
 }
Exemplo n.º 14
0
 public abstract object GetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor);
Exemplo n.º 15
0
		public override object GetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor)
		{
			return GetValueCore(node.Save(), parent, accessor);
		}
Exemplo n.º 16
0
        public override object GetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor)
        {
            var adapter = new XmlAdapter(node.Save(), XmlAdapter.For(parent).References);

            return(parent.CreateChildAdapter(node.ClrType, adapter));
        }
Exemplo n.º 17
0
 public override object GetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor)
 {
     return(node.ClrType == typeof(object)
                         ? new object()
                         : XmlTypeSerializer.For(node.ClrType).GetValue(node, parent, accessor));
 }
Exemplo n.º 18
0
		public abstract void   SetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor, object oldValue, ref object value);
Exemplo n.º 19
0
		public override object GetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor)
		{
			var adapter = new XmlAdapter(node.Save(), XmlAdapter.For(parent).References);
			return parent.CreateChildAdapter(node.ClrType, adapter);
		}
Exemplo n.º 20
0
		public override object GetStub(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor)
		{
			var itemType = node.ClrType.GetElementType();

			return Array.CreateInstance(itemType, 0);
		}
Exemplo n.º 21
0
 public override object GetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor)
 {
     return(node.Value);
 }
Exemplo n.º 22
0
		public override void SetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor, object oldValue, ref object value)
		{
		    using (var writer = new XmlSubtreeWriter(node))
		        serializer.Serialize(writer, value);
		}
Exemplo n.º 23
0
		public override object GetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor)
		{
			return Enum.Parse(node.ClrType, node.Value, true);
		}
Exemplo n.º 24
0
 public override object GetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor)
 {
     return(GetValueCore(node.Save(), parent, accessor));
 }
Exemplo n.º 25
0
 public override object GetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor)
 {
     return(Enum.Parse(node.ClrType, node.Value, true));
 }
Exemplo n.º 26
0
		public override void SetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor, object oldValue, ref object value)
		{
			node.Value = value.ToString();
		}
Exemplo n.º 27
0
		public override object GetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor)
		{
			return node.Value;
		}
Exemplo n.º 28
0
 public abstract void   SetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor, object oldValue, ref object value);
Exemplo n.º 29
0
		public override object GetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor)
		{
			return node.ClrType == typeof(object)
				? new object()
				: XmlTypeSerializer.For(node.ClrType).GetValue(node, parent, accessor);
		}
Exemplo n.º 30
0
		public override object GetStub(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor)
		{
			// TODO: Refactor
			var adapter = new XmlAdapter(node, XmlAdapter.For(parent).References);
			return parent.CreateChildAdapter(accessor.ClrType, adapter);
		}
Exemplo n.º 31
0
 public override void SetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor, ref object value)
 {
     using (var writer = new XmlSubtreeWriter(node))
         serializer.Serialize(writer, value);
 }
Exemplo n.º 32
0
		public virtual  object GetStub (IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor) { throw Error.NotSupported(); }
Exemplo n.º 33
0
		public abstract object GetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor);
Exemplo n.º 34
0
 public virtual object GetStub(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor)
 {
     throw Error.NotSupported();
 }
Exemplo n.º 35
0
 public override void SetValue(IXmlNode node, IDictionaryAdapter parent, IXmlAccessor accessor, object oldValue, ref object value)
 {
     node.Value = value.ToString();
 }