コード例 #1
0
        public virtual IImportRecord Read(TextReader input)
        {
            XPathNavigator navigator = CreateNavigator(input);

            navigator.MoveToRoot();
            if (!navigator.MoveToFirstChild())
            {
                throw new DeserializationException("Expected root node 'n2' not found");
            }

            int version = ReadExportVersion(navigator);

            if (2 != version)
            {
                throw new WrongVersionException("Invalid export version, expected 2 but was " + version);
            }

            var record = reader.Read(navigator);

            foreach (var item in record.ReadItems)
            {
                item.VersionOf.ValueAccessor = Persister.Repository.Get;
            }
            return(record);
        }
コード例 #2
0
        protected override ContentItem Deserialize(string xml)
        {
            if (string.IsNullOrEmpty(xml))
            {
                throw new ArgumentNullException("xml");
            }

            var doc = new XmlDocument();

            doc.LoadXml(xml);

            var record         = reader.Read(doc.CreateNavigator());
            var parentRelation = record.UnresolvedLinks.FirstOrDefault(ul => ul.RelationType == "parent" && ul.ReferencingItem == record.RootItem);
            var item           = record.RootItem;

            if (parentRelation != null && record.RootItem.Parent == null)
            {
                item.Parent = new UnresolvedRelation {
                    ID = parentRelation.ReferencedItemID
                }
            }
            ;

            notifier.NotifiyCreated(item);

            return(item);
        }
コード例 #3
0
        private ContentItem Mangle(ContentItem item)
        {
            XPathNavigator navigator = SerializeAndReadOutput(item);

            IItemXmlReader reader = CreateReader();

            return(reader.Read(navigator).RootItem);
        }
コード例 #4
0
        public void CanReReadBasicProperties()
        {
            XmlableItem    item = CreateOneItem <XmlableItem>(1, "the item", null);
            XPathNavigator sr   = SerializeAndReadOutput(item);

            IItemXmlReader reader   = CreateReader();
            ContentItem    readItem = reader.Read(sr).RootItem;

            Assert.AreNotSame(item, readItem);
            Assert.AreEqual(typeof(XmlableItem), readItem.GetContentType());
            Assert.AreEqual(1, readItem.ID);
            Assert.AreEqual("the item", readItem.Name);
        }
コード例 #5
0
        public virtual IImportRecord Read(TextReader input)
        {
            XPathNavigator navigator = CreateNavigator(input);

            navigator.MoveToRoot();
            if (!navigator.MoveToFirstChild())
            {
                throw new DeserializationException("Expected root node 'n2' not found");
            }

            int version = ReadExportVersion(navigator);

            if (2 != version)
            {
                throw new WrongVersionException("Invalid export version, expected 2 but was " + version);
            }

            return(_reader.Read(navigator));
        }
コード例 #6
0
        public void CanReReadProperties_WithStrangeCharacters()
        {
            string      weirdo = "<[{zuuuuagh}]> & co?!=!";
            XmlableItem item   = CreateOneItem <XmlableItem>(1, "<[{zuuuuagh}]> co!=!", null);

            item.Title    = weirdo;
            item.ZoneName = weirdo;
            item.SavedBy  = weirdo;

            XPathNavigator sr       = SerializeAndReadOutput(item);
            IItemXmlReader reader   = CreateReader();
            ContentItem    readItem = reader.Read(sr).RootItem;

            Assert.AreNotSame(item, readItem);
            Assert.AreEqual(typeof(XmlableItem), readItem.GetContentType());
            Assert.AreEqual(1, readItem.ID);
            Assert.AreEqual("<[{zuuuuagh}]> co!=!", readItem.Name);
            Assert.AreEqual(weirdo, readItem.Title);
            Assert.AreEqual(weirdo, readItem.ZoneName);
            Assert.AreEqual(weirdo, readItem.SavedBy);
        }