public object Get(INXmlElementReader nodeReader)
        {
            object objectInstance;

            using (var itemNodesReader = nodeReader.GetNextChildNode("items"))
            {
                var innerText = itemNodesReader.GetPayload().Trim('\r', '\n', ',', '\t').Replace("\r\n", string.Empty);
                var values = innerText.Split(',');

                var valuesList = new ArrayList();
                foreach (var valueText in values)
                {
                    valuesList.Add(double.Parse(valueText));
                }

                var typeName = nodeReader.Attributes.Get("type");
                var objectType = typeFinder.GetType(typeName);

                objectInstance = valuesList.ToArray(objectType.GetElementType().GetTargetType());

                readObjects.Add(nodeReader.Attributes.GetInteger("ID"), objectInstance);
            }

            return objectInstance;
        }
Exemple #2
0
        public void ReadMembers(object instance, INXmlElementReader nodeReader, IDataType type)
        {
            using (var membersNodeReader = nodeReader.GetNextChildNode("members"))
            {
                if (membersNodeReader == null)
                {
                    throw new NXmlReaderFormatException("Missing class members node.");
                }

                ReadFields(instance, membersNodeReader, type);
            }

            var baseNodeReader = nodeReader.GetNextChildNode();

            if (baseNodeReader != null)
            {
                if (baseNodeReader.Name != "base")
                {
                    throw new NXmlReaderFormatException(
                              string.Format("Found a {0} node when expecting a base node.", baseNodeReader.Name));
                }

                using (var baseClassTypeNode = baseNodeReader.GetNextChildNode())
                {
                    baseClassMembersReader.ReadMembers(instance, baseClassTypeNode, type.BaseType);
                }

                baseNodeReader.Dispose();
            }
        }
Exemple #3
0
        public void ReadMembers(object instance, INXmlElementReader nodeReader, IDataType type)
        {
            using (var membersNodeReader = nodeReader.GetNextChildNode("members"))
            {
                if (membersNodeReader == null)
                {
                    throw new NXmlReaderFormatException("Missing class members node.");
                }

                ReadFields(instance, membersNodeReader, type);
            }

            var baseNodeReader = nodeReader.GetNextChildNode();
            if (baseNodeReader != null)
            {
                if (baseNodeReader.Name != "base")
                {
                    throw new NXmlReaderFormatException(
                        string.Format("Found a {0} node when expecting a base node.", baseNodeReader.Name));
                }

                using (var baseClassTypeNode = baseNodeReader.GetNextChildNode())
                {
                    baseClassMembersReader.ReadMembers(instance, baseClassTypeNode, type.BaseType);
                }

                baseNodeReader.Dispose();
            }
        }
        public object Get(INXmlElementReader nodeReader)
        {
            object objectInstance;

            using (var itemNodesReader = nodeReader.GetNextChildNode("items"))
            {
                var innerText = itemNodesReader.GetPayload().Trim('\r', '\n', ',', '\t').Replace("\r\n", string.Empty);
                var values    = innerText.Split(',');

                var valuesList = new ArrayList();
                foreach (var valueText in values)
                {
                    valuesList.Add(double.Parse(valueText));
                }

                var typeName   = nodeReader.Attributes.Get("type");
                var objectType = typeFinder.GetType(typeName);

                objectInstance = valuesList.ToArray(objectType.GetElementType().GetTargetType());

                readObjects.Add(nodeReader.Attributes.GetInteger("ID"), objectInstance);
            }

            return(objectInstance);
        }
Exemple #5
0
        public object Get(INXmlElementReader nodeReader)
        {
            var valuesList = new ArrayList();

            using (var itemNodes = nodeReader.GetNextChildNode("items"))
            {
                INXmlElementReader itemNode;
                while ((itemNode = itemNodes.GetNextChildNode()) != null)
                {
                    if (objectReader.CanRead(itemNode))
                    {
                        valuesList.Add(objectReader.Get(itemNode));
                    }

                    itemNode.Dispose();
                }
            }

            var elementType    = typeFinder.GetType(nodeReader.Attributes.Get("type")).GetElementType();
            var objectInstance = valuesList.ToArray(elementType.GetTargetType());

            readObjects.Add(nodeReader.Attributes.GetInteger("ID"), objectInstance);

            return(objectInstance);
        }
        void IBaseTypeMembersReader.ReadMembers(object instance, INXmlElementReader nodeReader, IDataType type)
        {
            var dictionary = (IDictionary) instance;

            using (var itemNodesReader = nodeReader.GetNextChildNode("items"))
            {
                var numberOfItemPairs = itemNodesReader.Attributes.GetInteger("count");
                for (var itemIndex = 0; itemIndex < numberOfItemPairs; itemIndex++)
                {
                    object key;
                    object value;

                    using (var keyReader = itemNodesReader.GetNextChildNode())
                    {
                        key = objectReader.Get(keyReader);
                    }

                    using (var valueReader = itemNodesReader.GetNextChildNode())
                    {
                        value = objectReader.Get(valueReader);
                    }

                    dictionary.Add(key, value);
                }
            }
        }
        private void ReadFields(object instance, INXmlElementReader membersNodeReader, IDataType type)
        {
            INXmlElementReader fieldReader;
            while ((fieldReader = membersNodeReader.GetNextChildNode("f")) != null)
            {
                if (fieldReader.Name != "f")
                {
                    throw new NXmlReaderFormatException(
                        string.Format("Invalid node '{0}' found when expecting a field node", fieldReader.Name));
                }

                try
                {
                    var members = memberReader.Read(fieldReader, type);
                    members.SetValue(instance);
                }
                catch (Exception exception)
                {
                    var memberName = fieldReader.Attributes.Get("name");
                    throw new NSerializerException(
                        string.Format("Error reading member '{0}.{1}", type.FullName, memberName),
                        exception);
                }

                fieldReader.Dispose();
            }
        }
        public object Get(INXmlElementReader nodeReader)
        {
            var valuesList = new ArrayList();

            using (var itemNodes = nodeReader.GetNextChildNode("items"))
            {
                INXmlElementReader itemNode;
                while ((itemNode = itemNodes.GetNextChildNode()) != null)
                {
                    if (objectReader.CanRead(itemNode))
                    {
                        valuesList.Add(objectReader.Get(itemNode));
                    }

                    itemNode.Dispose();
                }
            }

            var elementType = typeFinder.GetType(nodeReader.Attributes.Get("type")).GetElementType();
            var objectInstance = valuesList.ToArray(elementType.GetTargetType());

            readObjects.Add(nodeReader.Attributes.GetInteger("ID"), objectInstance);

            return objectInstance;
        }
        private void ReadFields(object instance, INXmlElementReader membersNodeReader, IDataType type)
        {
            INXmlElementReader fieldReader;

            while ((fieldReader = membersNodeReader.GetNextChildNode("f")) != null)
            {
                if (fieldReader.Name != "f")
                {
                    throw new NXmlReaderFormatException(
                              string.Format("Invalid node '{0}' found when expecting a field node", fieldReader.Name));
                }

                try
                {
                    var members = memberReader.Read(fieldReader, type);
                    members.SetValue(instance);
                }
                catch (Exception exception)
                {
                    var memberName = fieldReader.Attributes.Get("name");
                    throw new NSerializerException(
                              string.Format("Error reading member '{0}.{1}", type.FullName, memberName),
                              exception);
                }

                fieldReader.Dispose();
            }
        }
Exemple #10
0
        public object Get(INXmlElementReader nodeReader)
        {
            var typeName = nodeReader.Attributes.Get("type");
            var type     = typeFinder.GetType(typeName);

            return(Enum.Parse(type.GetTargetType(), nodeReader.GetPayload().Trim()));
        }
Exemple #11
0
        void IBaseTypeMembersReader.ReadMembers(object instance, INXmlElementReader nodeReader, IDataType type)
        {
            var dictionary = (IDictionary)instance;

            using (var itemNodesReader = nodeReader.GetNextChildNode("items"))
            {
                var numberOfItemPairs = itemNodesReader.Attributes.GetInteger("count");
                for (var itemIndex = 0; itemIndex < numberOfItemPairs; itemIndex++)
                {
                    object key;
                    object value;

                    using (var keyReader = itemNodesReader.GetNextChildNode())
                    {
                        key = objectReader.Get(keyReader);
                    }

                    using (var valueReader = itemNodesReader.GetNextChildNode())
                    {
                        value = objectReader.Get(valueReader);
                    }

                    dictionary.Add(key, value);
                }
            }
        }
        public object Get(INXmlElementReader nodeReader)
        {
            var typeName = nodeReader.Attributes.Get("type");
            var type = typeFinder.GetType(typeName);

            var instance = appObjectRepository.Get(type.GetTargetType());
            readObjects.Add(nodeReader.Attributes.GetInteger("ID"), instance);

            return instance;
        }
Exemple #13
0
        public object Get(INXmlElementReader nodeReader)
        {
            object value;

            var data = nodeReader.GetPayload().Trim();

            switch (data)
            {
            case "max":
            {
                value = double.MaxValue;
                break;
            }

            case "min":
            {
                value = double.MinValue;
                break;
            }

            case "posinfinity":
            {
                value = double.PositiveInfinity;
                break;
            }

            case "neginfinity":
            {
                value = double.NegativeInfinity;
                break;
            }

            case "nan":
            {
                value = double.NaN;
                break;
            }

            default:
            {
                try
                {
                    value = double.Parse(data);
                }
                catch (Exception)
                {
                    throw new NXmlReaderFormatException(
                              string.Format("Unable to read double value '{0}'.", data));
                }
                break;
            }
            }

            return(value);
        }
        public object Get(INXmlElementReader nodeReader)
        {
            var typeName = nodeReader.Attributes.Get("type");
            var type     = typeFinder.GetType(typeName);

            var instance = appObjectRepository.Get(type.GetTargetType());

            readObjects.Add(nodeReader.Attributes.GetInteger("ID"), instance);

            return(instance);
        }
Exemple #15
0
 void IBaseTypeMembersReader.ReadMembers(object instance, INXmlElementReader nodeReader, IDataType type)
 {
     foreach (var reader in baseTypeReaders)
     {
         if (reader.CanRead(nodeReader))
         {
             reader.ReadMembers(instance, nodeReader, type);
             break;
         }
     }
 }
Exemple #16
0
 public bool CanRead(INXmlElementReader nodeReader)
 {
     var canRead = false;
     foreach (var reader in objectReaders)
     {
         canRead = reader.CanRead(nodeReader);
         if (canRead)
         {
             break;
         }
     }
     return canRead;
 }
Exemple #17
0
 public bool CanRead(INXmlElementReader nodeReader)
 {
     var canRead = false;
     foreach (var typeMemberReader in memberReaders)
     {
         canRead = typeMemberReader.CanRead(nodeReader);
         if (canRead)
         {
             break;
         }
     }
     return canRead;
 }
Exemple #18
0
        public object Get(INXmlElementReader nodeReader)
        {
            var typeName = nodeReader.Attributes.Get("type");
            var type = typeFinder.GetType(typeName);

            var typeAccessor = new TypeAccessor(type.GetTargetType(), docObjectRepository);
            var instance = typeAccessor.GetInstance();
            readObjects.Add(nodeReader.Attributes.GetInteger("ID"), instance);

            ((IBaseTypeMembersReader) this).ReadMembers(instance, nodeReader, type);

            return instance;
        }
Exemple #19
0
        public IMemberValue Read(INXmlElementReader nodeReader, IDataType type)
        {
            var memberValues = new List<IMemberValue>();
            foreach (var typeMemberReader in memberReaders)
            {
                if (typeMemberReader.CanRead(nodeReader))
                {
                    memberValues.Add(typeMemberReader.Read(nodeReader, type));
                    break;
                }
            }

            return new MembersValue(memberValues.ToArray());
        }
Exemple #20
0
        public bool CanRead(INXmlElementReader nodeReader)
        {
            var canRead = false;

            foreach (var reader in objectReaders)
            {
                canRead = reader.CanRead(nodeReader);
                if (canRead)
                {
                    break;
                }
            }
            return(canRead);
        }
Exemple #21
0
        public bool CanRead(INXmlElementReader nodeReader)
        {
            var canRead = false;

            foreach (var typeMemberReader in memberReaders)
            {
                canRead = typeMemberReader.CanRead(nodeReader);
                if (canRead)
                {
                    break;
                }
            }
            return(canRead);
        }
Exemple #22
0
 public object Get(INXmlElementReader nodeReader)
 {
     object readObject = null;
     foreach (var reader in objectReaders)
     {
         if (reader.CanRead(nodeReader))
         {
             logger.Debug("Reading node using {0}", nodeReader);
             readObject = reader.Get(nodeReader);
             break;
         }
     }
     return readObject;
 }
Exemple #23
0
        public object Get(INXmlElementReader nodeReader)
        {
            var typeName = nodeReader.Attributes.Get("type");
            var type     = typeFinder.GetType(typeName);

            var typeAccessor = new TypeAccessor(type.GetTargetType(), docObjectRepository);
            var instance     = typeAccessor.GetInstance();

            readObjects.Add(nodeReader.Attributes.GetInteger("ID"), instance);

            ReadMembers(instance, nodeReader, type);

            return(instance);
        }
Exemple #24
0
        public object Get(INXmlElementReader nodeReader)
        {
            object value;

            var data = nodeReader.GetPayload().Trim();
            switch (data)
            {
                case "max":
                    {
                        value = double.MaxValue;
                        break;
                    }
                case "min":
                    {
                        value = double.MinValue;
                        break;
                    }
                case "posinfinity":
                    {
                        value = double.PositiveInfinity;
                        break;
                    }
                case "neginfinity":
                    {
                        value = double.NegativeInfinity;
                        break;
                    }
                case "nan":
                    {
                        value = double.NaN;
                        break;
                    }
                default:
                    {
                        try
                        {
                            value = double.Parse(data);
                        }
                        catch (Exception)
                        {
                            throw new NXmlReaderFormatException(
                                string.Format("Unable to read double value '{0}'.", data));
                        }
                        break;
                    }
            }

            return value;
        }
Exemple #25
0
        public object Get(INXmlElementReader nodeReader)
        {
            object readObject = null;

            foreach (var reader in objectReaders)
            {
                if (reader.CanRead(nodeReader))
                {
                    logger.Debug("Reading node using {0}", nodeReader);
                    readObject = reader.Get(nodeReader);
                    break;
                }
            }
            return(readObject);
        }
Exemple #26
0
        public IMemberValue Read(INXmlElementReader nodeReader, IDataType type)
        {
            var memberValues = new List <IMemberValue>();

            foreach (var typeMemberReader in memberReaders)
            {
                if (typeMemberReader.CanRead(nodeReader))
                {
                    memberValues.Add(typeMemberReader.Read(nodeReader, type));
                    break;
                }
            }

            return(new MembersValue(memberValues.ToArray()));
        }
 public object Get(INXmlElementReader nodeReader)
 {
     var objectID = nodeReader.Attributes.GetInteger("ID");
     object readObject;
     try
     {
         readObject = readObjects.Get(objectID);
     }
     catch (Exception exception)
     {
         throw new UnableToReadXMLTextException(
             string.Format(
                 "Exception thrown while reading referenced object with ID {0}. No object with that ID in the read objects cache.",
                 objectID),
             exception);
     }
     return readObject;
 }
Exemple #28
0
        void IBaseTypeMembersReader.ReadMembers(object instance, INXmlElementReader nodeReader, IDataType type)
        {
            var list = (IList)instance;

            using (var itemNodes = nodeReader.GetNextChildNode("items"))
            {
                var numberOfItems = itemNodes.Attributes.GetInteger("count");

                while (numberOfItems-- > 0)
                {
                    INXmlElementReader itemNode;
                    using (itemNode = itemNodes.GetNextChildNode())
                    {
                        list.Add(objectReader.Get(itemNode));
                    }
                }
            }
        }
        public INXmlElementReader GetNextChildNode()
        {
            INXmlElementReader reader = null;

            if (inputStream.Seek('<', '>'))
            {
                inputStream.Seek(1, SeekOrigin.Current);
                var closingElement = inputStream.Peek() == '/';
                inputStream.Seek(-1, SeekOrigin.Current);

                if (!closingElement)
                {
                    reader = new XmlElementReaderFactory(inputStream).Create();
                }
            }

            return(reader);
        }
        public object Get(INXmlElementReader nodeReader)
        {
            var typeName = nodeReader.Attributes.Get("type");
            var type     = typeFinder.GetType(typeName);
            var instance = Activator.CreateInstance(type.GetTargetType());

            using (var membersNodeReader = nodeReader.GetNextChildNode("members"))
            {
                if (membersNodeReader == null)
                {
                    throw new NXmlReaderFormatException("Missing class members node.");
                }

                ReadFields(instance, membersNodeReader, type);
            }

            return(instance);
        }
        public object Get(INXmlElementReader nodeReader)
        {
            var typeName = nodeReader.Attributes.Get("type");
            var type = typeFinder.GetType(typeName);
            var instance = Activator.CreateInstance(type.GetTargetType());

            using (var membersNodeReader = nodeReader.GetNextChildNode("members"))
            {
                if (membersNodeReader == null)
                {
                    throw new NXmlReaderFormatException("Missing class members node.");
                }

                ReadFields(instance, membersNodeReader, type);
            }

            return instance;
        }
Exemple #32
0
        void IBaseTypeMembersReader.ReadMembers(object instance, INXmlElementReader nodeReader, IDataType type)
        {
            var list = (IList) instance;

            using (var itemNodes = nodeReader.GetNextChildNode("items"))
            {
                var numberOfItems = itemNodes.Attributes.GetInteger("count");

                while (numberOfItems-- > 0)
                {
                    INXmlElementReader itemNode;
                    using (itemNode = itemNodes.GetNextChildNode())
                    {
                        list.Add(objectReader.Get(itemNode));
                    }
                }
            }
        }
        public object Get(INXmlElementReader nodeReader)
        {
            var    objectID = nodeReader.Attributes.GetInteger("ID");
            object readObject;

            try
            {
                readObject = readObjects.Get(objectID);
            }
            catch (Exception exception)
            {
                throw new UnableToReadXMLTextException(
                          string.Format(
                              "Exception thrown while reading referenced object with ID {0}. No object with that ID in the read objects cache.",
                              objectID),
                          exception);
            }
            return(readObject);
        }
Exemple #34
0
        public IMemberValue Read(INXmlElementReader nodeReader, IDataType type)
        {
            var fieldName = nodeReader.Attributes.Get("name");

            var field = type.GetField(fieldName);
            if (field == null)
            {
                throw new UnableToReadXMLTextException(
                    string.Format("Unable to find field '{0}'.", fieldName));
            }

            IMemberValue value;
            using (var valueNode = nodeReader.GetNextChildNode())
            {
                value = new FieldValue(field, objectReader.Get(valueNode));
            }

            return value;
        }
Exemple #35
0
        public IMemberValue Read(INXmlElementReader nodeReader, IDataType type)
        {
            var fieldName = nodeReader.Attributes.Get("name");

            var field = type.GetField(fieldName);

            if (field == null)
            {
                throw new UnableToReadXMLTextException(
                          string.Format("Unable to find field '{0}'.", fieldName));
            }

            IMemberValue value;

            using (var valueNode = nodeReader.GetNextChildNode())
            {
                value = new FieldValue(field, objectReader.Get(valueNode));
            }

            return(value);
        }
 public bool CanRead(INXmlElementReader nodeReader)
 {
     return nodeReader.Name == "typename";
 }
 public object Get(INXmlElementReader nodeReader)
 {
     return new MetaDataTypeName(
         nodeReader.Attributes.GetInteger("typeid"),
         nodeReader.Attributes.Get("name"));
 }
 public object Get(INXmlElementReader nodeReader)
 {
     return(Convert.ChangeType(nodeReader.Attributes.Get("value"), typeof(T)));
 }
 public bool CanRead(INXmlElementReader nodeReader)
 {
     return nodeReader.Name == "appObject";
 }
Exemple #40
0
 void IBaseTypeMembersReader.ReadMembers(object instance, INXmlElementReader nodeReader, IDataType type)
 {
     foreach (var reader in baseTypeReaders)
     {
         if (reader.CanRead(nodeReader))
         {
             reader.ReadMembers(instance, nodeReader, type);
             break;
         }
     }
 }
 public object Get(INXmlElementReader nodeReader)
 {
     return reader.Get(nodeReader);
 }
 public bool CanRead(INXmlElementReader nodeReader)
 {
     return(nodeReader.Name == "value");
 }
 public bool CanRead(INXmlElementReader nodeReader)
 {
     return(nodeReader.Name == nodeName);
 }
Exemple #44
0
 public bool CanRead(INXmlElementReader nodeReader)
 {
     return nodeReader.Name == "version";
 }
Exemple #45
0
 public object Get(INXmlElementReader nodeReader)
 {
     return new Version(nodeReader.Attributes.Get("value"));
 }
Exemple #46
0
 public object Get(INXmlElementReader nodeReader)
 {
     return(null);
 }
 public object Get(INXmlElementReader nodeReader)
 {
     return DateTime.Parse(nodeReader.Attributes.Get("value"));
 }
 public bool CanRead(INXmlElementReader nodeReader)
 {
     return nodeReader.Name == "arrayOfDoubles";
 }
Exemple #49
0
 public object Get(INXmlElementReader nodeReader)
 {
     return(new Guid(nodeReader.Attributes.Get("value")));
 }
Exemple #50
0
 public object Get(INXmlElementReader nodeReader)
 {
     var typeName = nodeReader.Attributes.Get("type");
     var type = typeFinder.GetType(typeName);
     return Enum.Parse(type.GetTargetType(), nodeReader.GetPayload().Trim());
 }
 public bool CanRead(INXmlElementReader nodeReader)
 {
     return(nodeReader.Name == "appObject");
 }
Exemple #52
0
 public bool CanRead(INXmlElementReader nodeReader)
 {
     return(nodeReader.Name == "timespan");
 }
Exemple #53
0
 public object Get(INXmlElementReader nodeReader)
 {
     return null;
 }
Exemple #54
0
 public object Get(INXmlElementReader nodeReader)
 {
     return(new MetaDataTypeName(
                nodeReader.Attributes.GetInteger("typeid"),
                nodeReader.Attributes.Get("name")));
 }
 public bool CanRead(INXmlElementReader nodeReader)
 {
     return(nodeReader.Name == "arrayOfDoubles");
 }
 public bool CanRead(INXmlElementReader nodeReader)
 {
     return(nodeReader.Name == "objref");
 }
Exemple #57
0
 public bool CanRead(INXmlElementReader nodeReader)
 {
     return nodeReader.Name == "null";
 }
 public bool CanRead(INXmlElementReader nodeReader)
 {
     return nodeReader.Name == "datetime";
 }
 public bool CanRead(INXmlElementReader nodeReader)
 {
     return reader.CanRead(nodeReader);
 }
 public object Get(INXmlElementReader nodeReader)
 {
     return(DateTime.Parse(nodeReader.Attributes.Get("value")));
 }