Exemple #1
0
        protected override void ProcessRecord()
        {
            if (Yaml == null && Item == null)
            {
                throw new InvalidOperationException("Neither YAML strings or IItemDatas were passed in, cannot process.");
            }

            var console       = new PowershellProgressStatus(Host, "Deserialize Item");
            var consoleLogger = new WebConsoleLogger(console, MessageType.Debug);

            var yaml = CreateFormatter(CreateFieldFilter());

            // Ignoring BranchId should probably be controllable from the outside. For now it will just be wired to false.
            // See issue 283 in Unicorn. https://github.com/SitecoreUnicorn/Unicorn/issues/283
            // Unicorn default for this will be to ignore BranchId
            var deserializer = new DefaultDeserializer(false, new DefaultDeserializerLogger(consoleLogger), CreateFieldFilter());

            if (Yaml != null)
            {
                using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(Yaml)))
                {
                    var item = yaml.ReadSerializedItem(stream, "(from PowerShell)");

                    consoleLogger.Info(item.Path);
                    deserializer.Deserialize(item, null);
                }
            }

            if (Item != null)
            {
                consoleLogger.Info(Item.Path);
                deserializer.Deserialize(Item, null);
            }
        }
        private static Container InitializeContainer()
        {
            Container container = SitecoreSidekick.Bootstrap.Container;

            // Register components here
            container.Register <IContentMigrationManagerService, ContentMigrationManagerService>();
            container.RegisterFactory <IRemoteContentService>(args =>
            {
                var registration = container.Resolve <IScsRegistrationService>();
                return(new RemoteContentService(registration));
            });
            container.Register <ISitecoreDataAccessService, SitecoreDataAccessService>();
            container.Register <ILoggingService, LoggingService>();
            container.RegisterFactory <IDataStore>(args =>
            {
                IDefaultDeserializerLogger logger = (IDefaultDeserializerLogger)args.FirstOrDefault(a => a is IDefaultDeserializerLogger);
                var deserializer = new DefaultDeserializer(logger, new DefaultFieldFilter());
                return(new SitecoreDataStore(deserializer));
            });
            container.RegisterFactory <IContentItemPuller>(args => new ContentItemPuller());
            container.RegisterFactory <IContentItemInstaller>(args => new ContentItemInstaller());
            container.RegisterFactory <IDefaultLogger>(args => new DefaultLogger());
            container.RegisterFactory <ISignatureService>(args => new SignatureService((string)args[0]));
            container.RegisterFactory <IItemComparer>(args => new DefaultItemComparer());
            container.RegisterFactory <IYamlSerializationService>(args => new YamlSerializationService());

            return(container);
        }
        public void Deserialize_IgnoresField_ExcludedWithFieldFilter()
        {
            var ignoredFieldId = ID.NewID;

            var fieldFilter = Substitute.For <IFieldFilter>();

            fieldFilter.Includes(Arg.Any <Guid>()).Returns(true);
            fieldFilter.Includes(ignoredFieldId.Guid).Returns(false);

            var deserializer = new DefaultDeserializer(Substitute.For <IDefaultDeserializerLogger>(), fieldFilter);

            deserializer.ParentDataStore = new SitecoreDataStore(deserializer);

            using (var db = new Db())
            {
                var itemId = ID.NewID;

                db.Add(new DbItem("Test Item", itemId)
                {
                    { ignoredFieldId, "Test Value" }
                });

                var itemData = new ProxyItem(new ItemData(db.GetItem(itemId)));

                var fields = new List <IItemFieldValue>();
                fields.Add(new FakeFieldValue("Changed Ignored Value", fieldId: ignoredFieldId.Guid));
                ((ProxyItemVersion)itemData.Versions.First()).Fields = fields;

                deserializer.Deserialize(itemData);

                var fromDb = db.GetItem(itemId);

                Assert.Equal(fromDb[ignoredFieldId], "Test Value");
            }
        }
        protected IDeserializer CreateTestDeserializer(Db db)
        {
            var fieldFilter = Substitute.For <IFieldFilter>();

            fieldFilter.Includes(Arg.Any <Guid>()).Returns(true);

            var deserializer = new DefaultDeserializer(Substitute.For <IDefaultDeserializerLogger>(), fieldFilter);

            deserializer.ParentDataStore = new SitecoreDataStore(deserializer);

            db.Add(new DbTemplate("Test Template", _testTemplateId)
            {
                new DbField("Test Field", _testVersionedFieldId),
                new DbField("Test Shared", _testSharedFieldId)
                {
                    Shared = true
                }
            });

            db.Add(new DbTemplate("Test Template2", _testTemplate2Id)
            {
                new DbField("Test Field"),
                new DbField("Test Shared")
                {
                    Shared = true
                }
            });

            return(deserializer);
        }
        private void TestDeserialize <T>(byte[] input, T objectIn, DataType type)
        {
            DefaultDeserializer deserializer = new DefaultDeserializer(input);
            var objectOut = deserializer.ReadZigBeeType <T>(type);

            Assert.Equal(objectIn, objectOut);
        }
Exemple #6
0
        public ContentItemInstaller()
        {
            var deserializer = new DefaultDeserializer(_logger, new DefaultFieldFilter());

            _scDatastore = new SitecoreDataStore(deserializer);
            _sitecore    = Bootstrap.Container.Resolve <ISitecoreAccessService>();
        }
Exemple #7
0
        protected override void ProcessRecord()
        {
            if (Yaml == null && Item == null)
            {
                throw new InvalidOperationException("Neither YAML strings or IItemDatas were passed in, cannot process.");
            }

            var console       = new PowershellProgressStatus(Host, "Deserialize Item");
            var consoleLogger = new WebConsoleLogger(console, MessageType.Debug);

            var yaml = CreateFormatter(CreateFieldFilter());

            var deserializer = new DefaultDeserializer(new DefaultDeserializerLogger(consoleLogger), CreateFieldFilter());

            if (Yaml != null)
            {
                using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(Yaml)))
                {
                    var item = yaml.ReadSerializedItem(stream, "(from PowerShell)");

                    consoleLogger.Info(item.Path);
                    deserializer.Deserialize(item);
                }
            }

            if (Item != null)
            {
                consoleLogger.Info(Item.Path);
                deserializer.Deserialize(Item);
            }
        }
Exemple #8
0
        public void Deserializer_SetAttributes()
        {
            XDocument           document         = XDocument.Load(testXMLPath);
            DefaultDeserializer testDeserializer = new DefaultDeserializer(document);

            testDeserializer.Deserialize();
            DeserializedElement root = testDeserializer.Root;

            Assert.AreEqual(root.Value, "RootTextValue");
        }
Exemple #9
0
        public void Find_Test()
        {
            XDocument           document         = XDocument.Load(testXMLPath);
            DefaultDeserializer testDeserializer = new DefaultDeserializer(document);

            testDeserializer.Deserialize();

            DefaultSerializer serializer = new DefaultSerializer(testDeserializer.Root);

            Assert.AreEqual("VVVVVV", serializer.Find("ElementAsValue").First().Value);
        }
Exemple #10
0
        public void FindChildren_Test()
        {
            XDocument           document         = XDocument.Load(testXMLPath);
            DefaultDeserializer testDeserializer = new DefaultDeserializer(document);

            testDeserializer.Deserialize();

            DeserializedElement testElement = testDeserializer.Root.FindChildren("Child1").First();

            Assert.AreEqual("bar", testElement.Attributes["foo"]);
        }
Exemple #11
0
        public void Deserializer_SetValue()
        {
            XDocument           document         = XDocument.Load(testXMLPath);
            DefaultDeserializer testDeserializer = new DefaultDeserializer(document);

            testDeserializer.Deserialize();
            DeserializedElement root = testDeserializer.Root;

            Assert.AreEqual(root.Attributes["att1"], "val1");
            Assert.AreEqual(root.Attributes["att2"], "val2");
            Assert.AreEqual(root.Attributes["att3"], "val3");
        }
Exemple #12
0
        public void Deserializer_SetName()
        {
            XDocument           document         = XDocument.Load(testXMLPath);
            DefaultDeserializer testDeserializer = new DefaultDeserializer(document);

            testDeserializer.Deserialize();
            DeserializedElement root = testDeserializer.Root;

            Assert.AreEqual(root.Name, "Root");
            Assert.AreEqual(root.Children[0].Name, "Child1");
            Assert.AreEqual(root.Children[0].Children[0].Name, "ElementAsValue");
        }
        public void AddTwoDefaultDeserializers_Throws()
        {
            var myDefaultDeserializer1 = new DefaultDeserializer(new SerializableTypeInfo(null, "MyPackformatName", 1, new List <FieldOrPropertyMemberInfo>()));
            var myDefaultDeserializer2 = new DefaultDeserializer(new SerializableTypeInfo(null, "MyPackformatName", 1, new List <FieldOrPropertyMemberInfo>()));

            Action action = () =>
            {
                var deserializerCollection = (DeserializerCollection)DeserializerCollection.New
                                             .Add(myDefaultDeserializer1)
                                             .Add(myDefaultDeserializer2);
            };

            action.ShouldThrow <ShapeshifterException>().Where(i => i.Id == Exceptions.DeserializerAlreadyExistsId);
        }
Exemple #14
0
        private static bool ProcessItem(IItemData item)
        {
            if (item == null)
            {
                return(false);
            }

            var consoleLogger = new SitecoreLogger();

            var deserializer = new DefaultDeserializer(false, new DefaultDeserializerLogger(consoleLogger), CreateFieldFilter());

            consoleLogger.Info(item.Path);
            deserializer.Deserialize(item, null);
            return(true);
        }
        public void AddCustomAndDefaultDeserializerForConcreteVersion_InAnyOrder_Resolve_CustomDeserializerIsReturned()
        {
            var myDefaultDeserializer = new DefaultDeserializer(new SerializableTypeInfo(null, "MyPackformatName", 1, new List <FieldOrPropertyMemberInfo>()));
            var myCustomDeserializer  = new CustomDeserializer("MyPackformatName", 1, null);

            {
                var deserializerCollection = (DeserializerCollection)DeserializerCollection.New
                                             .Add(myCustomDeserializer)
                                             .Add(myDefaultDeserializer);

                deserializerCollection.ResolveDeserializer(new DeserializerKey("MyPackformatName", 1)).Should().Be(myCustomDeserializer);
            }
            {
                var deserializerCollection = (DeserializerCollection)DeserializerCollection.New
                                             .Add(myDefaultDeserializer)
                                             .Add(myCustomDeserializer);

                deserializerCollection.ResolveDeserializer(new DeserializerKey("MyPackformatName", 1)).Should().Be(myCustomDeserializer);
            }
        }